@frame-ui-ng/components 0.4.0-beta.0 → 0.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 (161) hide show
  1. package/confirm-popover/src/styles/confirm-popover.css +20 -0
  2. package/drag-drop/src/styles/_vars.css +28 -0
  3. package/drag-drop/src/styles/drag-drop.css +132 -0
  4. package/fesm2022/frame-ui-ng-components-accordion.mjs +26 -21
  5. package/fesm2022/frame-ui-ng-components-accordion.mjs.map +1 -1
  6. package/fesm2022/frame-ui-ng-components-alert.mjs +4 -0
  7. package/fesm2022/frame-ui-ng-components-alert.mjs.map +1 -1
  8. package/fesm2022/frame-ui-ng-components-avatar.mjs +7 -0
  9. package/fesm2022/frame-ui-ng-components-avatar.mjs.map +1 -1
  10. package/fesm2022/frame-ui-ng-components-badge.mjs +4 -0
  11. package/fesm2022/frame-ui-ng-components-badge.mjs.map +1 -1
  12. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs +13 -6
  13. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs.map +1 -1
  14. package/fesm2022/frame-ui-ng-components-button-group.mjs +1 -0
  15. package/fesm2022/frame-ui-ng-components-button-group.mjs.map +1 -1
  16. package/fesm2022/frame-ui-ng-components-button.mjs +5 -0
  17. package/fesm2022/frame-ui-ng-components-button.mjs.map +1 -1
  18. package/fesm2022/frame-ui-ng-components-calendar.mjs +4 -0
  19. package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
  20. package/fesm2022/frame-ui-ng-components-card.mjs +15 -15
  21. package/fesm2022/frame-ui-ng-components-card.mjs.map +1 -1
  22. package/fesm2022/frame-ui-ng-components-carousel.mjs +33 -16
  23. package/fesm2022/frame-ui-ng-components-carousel.mjs.map +1 -1
  24. package/fesm2022/frame-ui-ng-components-checkbox.mjs +7 -9
  25. package/fesm2022/frame-ui-ng-components-checkbox.mjs.map +1 -1
  26. package/fesm2022/frame-ui-ng-components-collapsible.mjs +24 -23
  27. package/fesm2022/frame-ui-ng-components-collapsible.mjs.map +1 -1
  28. package/fesm2022/frame-ui-ng-components-combobox.mjs +66 -18
  29. package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
  30. package/fesm2022/frame-ui-ng-components-command.mjs +47 -16
  31. package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
  32. package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +3 -0
  33. package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -1
  34. package/fesm2022/frame-ui-ng-components-confirm-popover.mjs +423 -0
  35. package/fesm2022/frame-ui-ng-components-confirm-popover.mjs.map +1 -0
  36. package/fesm2022/frame-ui-ng-components-context-menu.mjs +71 -45
  37. package/fesm2022/frame-ui-ng-components-context-menu.mjs.map +1 -1
  38. package/fesm2022/frame-ui-ng-components-date-picker.mjs +3 -0
  39. package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
  40. package/fesm2022/frame-ui-ng-components-drag-drop.mjs +293 -0
  41. package/fesm2022/frame-ui-ng-components-drag-drop.mjs.map +1 -0
  42. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +73 -36
  43. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
  44. package/fesm2022/frame-ui-ng-components-empty.mjs +6 -0
  45. package/fesm2022/frame-ui-ng-components-empty.mjs.map +1 -1
  46. package/fesm2022/frame-ui-ng-components-field.mjs +21 -12
  47. package/fesm2022/frame-ui-ng-components-field.mjs.map +1 -1
  48. package/fesm2022/frame-ui-ng-components-forms.mjs +1 -0
  49. package/fesm2022/frame-ui-ng-components-forms.mjs.map +1 -1
  50. package/fesm2022/frame-ui-ng-components-hover-card.mjs +49 -43
  51. package/fesm2022/frame-ui-ng-components-hover-card.mjs.map +1 -1
  52. package/fesm2022/frame-ui-ng-components-input-otp.mjs +5 -0
  53. package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
  54. package/fesm2022/frame-ui-ng-components-input.mjs +13 -0
  55. package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
  56. package/fesm2022/frame-ui-ng-components-item.mjs +10 -0
  57. package/fesm2022/frame-ui-ng-components-item.mjs.map +1 -1
  58. package/fesm2022/frame-ui-ng-components-menubar.mjs +15 -0
  59. package/fesm2022/frame-ui-ng-components-menubar.mjs.map +1 -1
  60. package/fesm2022/frame-ui-ng-components-modal.mjs +128 -114
  61. package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
  62. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs +14 -0
  63. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs.map +1 -1
  64. package/fesm2022/frame-ui-ng-components-pagination.mjs +8 -0
  65. package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
  66. package/fesm2022/frame-ui-ng-components-popover.mjs +63 -51
  67. package/fesm2022/frame-ui-ng-components-popover.mjs.map +1 -1
  68. package/fesm2022/frame-ui-ng-components-progress.mjs +2 -0
  69. package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
  70. package/fesm2022/frame-ui-ng-components-radio-group.mjs +5 -0
  71. package/fesm2022/frame-ui-ng-components-radio-group.mjs.map +1 -1
  72. package/fesm2022/frame-ui-ng-components-resizable.mjs +6 -0
  73. package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
  74. package/fesm2022/frame-ui-ng-components-select.mjs +62 -14
  75. package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
  76. package/fesm2022/frame-ui-ng-components-separator.mjs +1 -0
  77. package/fesm2022/frame-ui-ng-components-separator.mjs.map +1 -1
  78. package/fesm2022/frame-ui-ng-components-sheet.mjs +99 -88
  79. package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
  80. package/fesm2022/frame-ui-ng-components-sidebar.mjs +27 -12
  81. package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
  82. package/fesm2022/frame-ui-ng-components-skeleton.mjs +1 -0
  83. package/fesm2022/frame-ui-ng-components-skeleton.mjs.map +1 -1
  84. package/fesm2022/frame-ui-ng-components-slider.mjs +29 -16
  85. package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
  86. package/fesm2022/frame-ui-ng-components-spinner.mjs +1 -0
  87. package/fesm2022/frame-ui-ng-components-spinner.mjs.map +1 -1
  88. package/fesm2022/frame-ui-ng-components-switch.mjs +6 -0
  89. package/fesm2022/frame-ui-ng-components-switch.mjs.map +1 -1
  90. package/fesm2022/frame-ui-ng-components-table.mjs +76 -50
  91. package/fesm2022/frame-ui-ng-components-table.mjs.map +1 -1
  92. package/fesm2022/frame-ui-ng-components-tabs.mjs +4 -0
  93. package/fesm2022/frame-ui-ng-components-tabs.mjs.map +1 -1
  94. package/fesm2022/frame-ui-ng-components-textarea.mjs +1 -0
  95. package/fesm2022/frame-ui-ng-components-textarea.mjs.map +1 -1
  96. package/fesm2022/frame-ui-ng-components-toast.mjs +2 -0
  97. package/fesm2022/frame-ui-ng-components-toast.mjs.map +1 -1
  98. package/fesm2022/frame-ui-ng-components-toggle.mjs +23 -16
  99. package/fesm2022/frame-ui-ng-components-toggle.mjs.map +1 -1
  100. package/fesm2022/frame-ui-ng-components-tooltip.mjs +30 -25
  101. package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
  102. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +26 -8
  103. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
  104. package/fesm2022/frame-ui-ng-components.mjs +1387 -552
  105. package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
  106. package/package.json +10 -2
  107. package/popover/src/styles/popover.css +106 -101
  108. package/src/styles/components.css +6 -4
  109. package/styles/components.css +6 -4
  110. package/styles.css +6 -4
  111. package/types/frame-ui-ng-components-accordion.d.ts +11 -4
  112. package/types/frame-ui-ng-components-alert.d.ts +4 -0
  113. package/types/frame-ui-ng-components-avatar.d.ts +7 -0
  114. package/types/frame-ui-ng-components-badge.d.ts +4 -0
  115. package/types/frame-ui-ng-components-breadcrumb.d.ts +7 -0
  116. package/types/frame-ui-ng-components-button-group.d.ts +1 -0
  117. package/types/frame-ui-ng-components-button.d.ts +5 -0
  118. package/types/frame-ui-ng-components-calendar.d.ts +1 -0
  119. package/types/frame-ui-ng-components-card.d.ts +8 -3
  120. package/types/frame-ui-ng-components-carousel.d.ts +11 -2
  121. package/types/frame-ui-ng-components-checkbox.d.ts +3 -2
  122. package/types/frame-ui-ng-components-collapsible.d.ts +9 -4
  123. package/types/frame-ui-ng-components-combobox.d.ts +32 -3
  124. package/types/frame-ui-ng-components-command.d.ts +26 -4
  125. package/types/frame-ui-ng-components-confirm-modal.d.ts +2 -0
  126. package/types/frame-ui-ng-components-confirm-popover.d.ts +87 -0
  127. package/types/frame-ui-ng-components-context-menu.d.ts +29 -10
  128. package/types/frame-ui-ng-components-date-picker.d.ts +1 -0
  129. package/types/frame-ui-ng-components-drag-drop.d.ts +103 -0
  130. package/types/frame-ui-ng-components-dropdown-menu.d.ts +32 -9
  131. package/types/frame-ui-ng-components-empty.d.ts +6 -0
  132. package/types/frame-ui-ng-components-field.d.ts +9 -0
  133. package/types/frame-ui-ng-components-forms.d.ts +1 -0
  134. package/types/frame-ui-ng-components-hover-card.d.ts +8 -2
  135. package/types/frame-ui-ng-components-input-otp.d.ts +4 -0
  136. package/types/frame-ui-ng-components-input.d.ts +13 -0
  137. package/types/frame-ui-ng-components-item.d.ts +10 -0
  138. package/types/frame-ui-ng-components-menubar.d.ts +15 -0
  139. package/types/frame-ui-ng-components-modal.d.ts +12 -0
  140. package/types/frame-ui-ng-components-navigation-menu.d.ts +14 -0
  141. package/types/frame-ui-ng-components-pagination.d.ts +8 -0
  142. package/types/frame-ui-ng-components-popover.d.ts +14 -2
  143. package/types/frame-ui-ng-components-progress.d.ts +2 -0
  144. package/types/frame-ui-ng-components-radio-group.d.ts +5 -0
  145. package/types/frame-ui-ng-components-resizable.d.ts +3 -0
  146. package/types/frame-ui-ng-components-select.d.ts +23 -2
  147. package/types/frame-ui-ng-components-separator.d.ts +1 -0
  148. package/types/frame-ui-ng-components-sheet.d.ts +11 -0
  149. package/types/frame-ui-ng-components-sidebar.d.ts +21 -0
  150. package/types/frame-ui-ng-components-skeleton.d.ts +1 -0
  151. package/types/frame-ui-ng-components-slider.d.ts +5 -2
  152. package/types/frame-ui-ng-components-spinner.d.ts +1 -0
  153. package/types/frame-ui-ng-components-switch.d.ts +6 -0
  154. package/types/frame-ui-ng-components-table.d.ts +26 -0
  155. package/types/frame-ui-ng-components-tabs.d.ts +4 -0
  156. package/types/frame-ui-ng-components-textarea.d.ts +1 -0
  157. package/types/frame-ui-ng-components-toast.d.ts +2 -0
  158. package/types/frame-ui-ng-components-toggle.d.ts +8 -2
  159. package/types/frame-ui-ng-components-tooltip.d.ts +6 -2
  160. package/types/frame-ui-ng-components-virtual-scroll.d.ts +11 -2
  161. package/types/frame-ui-ng-components.d.ts +492 -76
@@ -1,7 +1,7 @@
1
1
  import * as i1 from '@angular/cdk/menu';
2
2
  import { CdkMenu, CdkTargetMenuAim, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuGroup, CdkMenuItemRadio, CdkMenuTrigger } from '@angular/cdk/menu';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, Injectable, input, Directive, inject, signal, effect, TemplateRef, booleanAttribute, DestroyRef, ElementRef, NgModule } from '@angular/core';
4
+ import { InjectionToken, Injectable, input, Directive, inject, computed, TemplateRef, booleanAttribute, DestroyRef, ElementRef, signal, NgModule } from '@angular/core';
5
5
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
6
 
7
7
  const DEFAULT_SIDE_OFFSET = 4;
@@ -114,6 +114,7 @@ function horizontalOverlayY(align) {
114
114
  }
115
115
 
116
116
  const FR_DROPDOWN_MENU_PARENT = new InjectionToken('FrDropdownMenuParent');
117
+ /** Shared registry for nested dropdown menu state. */
117
118
  class FrDropdownMenuTree {
118
119
  triggers = new Set();
119
120
  closeTimeoutId = null;
@@ -158,6 +159,7 @@ class FrDropdownMenuTree {
158
159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuTree, decorators: [{
159
160
  type: Injectable
160
161
  }] });
162
+ /** Root controller for dropdown menu interactions. */
161
163
  class FrDropdownMenu {
162
164
  closeDelay = input(140, ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
163
165
  triggerMode = input('click', ...(ngDevMode ? [{ debugName: "triggerMode" }] : /* istanbul ignore next */ []));
@@ -186,18 +188,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
186
188
  },
187
189
  }]
188
190
  }], propDecorators: { closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], triggerMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
191
+ /** Nested submenu controller for dropdown menu. */
189
192
  class FrDropdownMenuSub {
190
193
  parent = inject(FR_DROPDOWN_MENU_PARENT, { skipSelf: true });
191
194
  closeDelayInput = input(null, { ...(ngDevMode ? { debugName: "closeDelayInput" } : /* istanbul ignore next */ {}), alias: 'closeDelay' });
192
195
  triggerModeInput = input(null, { ...(ngDevMode ? { debugName: "triggerModeInput" } : /* istanbul ignore next */ {}), alias: 'triggerMode' });
193
- closeDelay = signal(this.parent.closeDelay(), ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
194
- triggerMode = signal(this.parent.triggerMode(), ...(ngDevMode ? [{ debugName: "triggerMode" }] : /* istanbul ignore next */ []));
195
- constructor() {
196
- effect(() => {
197
- this.closeDelay.set(this.closeDelayInput() ?? this.parent.closeDelay());
198
- this.triggerMode.set(this.triggerModeInput() ?? this.parent.triggerMode());
199
- });
200
- }
196
+ closeDelay = computed(() => this.closeDelayInput() ?? this.parent.closeDelay(), ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
197
+ triggerMode = computed(() => this.triggerModeInput() ?? this.parent.triggerMode(), ...(ngDevMode ? [{ debugName: "triggerMode" }] : /* istanbul ignore next */ []));
201
198
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuSub, deps: [], target: i0.ɵɵFactoryTarget.Directive });
202
199
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrDropdownMenuSub, isStandalone: true, selector: "[frDropdownMenuSub]", inputs: { closeDelayInput: { classPropertyName: "closeDelayInput", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null }, triggerModeInput: { classPropertyName: "triggerModeInput", publicName: "triggerMode", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "frame-dropdown-menu-sub" }, providers: [
203
200
  {
@@ -220,9 +217,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
220
217
  class: 'frame-dropdown-menu-sub',
221
218
  },
222
219
  }]
223
- }], ctorParameters: () => [], propDecorators: { closeDelayInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], triggerModeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
220
+ }], propDecorators: { closeDelayInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], triggerModeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
224
221
 
225
222
  const FR_DROPDOWN_MENU_CONTENT = new InjectionToken('FrDropdownMenuContent');
223
+ /** Content slot for dropdown menu. */
226
224
  class FrDropdownMenuContent {
227
225
  templateRef = inject((TemplateRef));
228
226
  align = input('start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
@@ -263,6 +261,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
263
261
  ],
264
262
  }]
265
263
  }], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], alignOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignOffset", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }] } });
264
+ /** Panel slot for dropdown menu. */
266
265
  class FrDropdownMenuPanel {
267
266
  side = inject(FR_DROPDOWN_MENU_CONTENT).side;
268
267
  tree = inject(FrDropdownMenuTree);
@@ -291,6 +290,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
291
290
  }]
292
291
  }] });
293
292
 
293
+ /** Item slot for dropdown menu. */
294
294
  class FrDropdownMenuItem {
295
295
  inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
296
296
  variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
@@ -309,16 +309,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
309
309
  },
310
310
  }]
311
311
  }], propDecorators: { inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
312
+ /** Item slot for dropdown menu checkbox. */
312
313
  class FrDropdownMenuCheckboxItem {
313
314
  checkboxItem = inject(CdkMenuItemCheckbox);
315
+ lastChecked = false;
314
316
  checked = input(false, { ...(ngDevMode ? { debugName: "checked" } : /* istanbul ignore next */ {}), alias: 'checked',
315
317
  transform: booleanAttribute });
316
318
  inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
317
319
  variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
318
- constructor() {
319
- effect(() => {
320
- this.checkboxItem.checked = this.checked();
321
- });
320
+ ngDoCheck() {
321
+ const checked = this.checked();
322
+ if (checked === this.lastChecked) {
323
+ return;
324
+ }
325
+ this.lastChecked = checked;
326
+ this.checkboxItem.checked = checked;
322
327
  }
323
328
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuCheckboxItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
324
329
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrDropdownMenuCheckboxItem, isStandalone: true, selector: "button[frDropdownMenuCheckboxItem]", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-checked": "checkboxItem.checked ? \"\" : null", "attr.data-inset": "inset() ? \"\" : null", "attr.data-variant": "variant()" }, classAttribute: "frame-dropdown-menu__item frame-dropdown-menu__checkbox-item" }, hostDirectives: [{ directive: i1.CdkMenuItemCheckbox }], ngImport: i0 });
@@ -335,7 +340,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
335
340
  '[attr.data-variant]': 'variant()',
336
341
  },
337
342
  }]
338
- }], ctorParameters: () => [], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
343
+ }], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
344
+ /** Group slot for dropdown menu radio. */
339
345
  class FrDropdownMenuRadioGroup {
340
346
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuRadioGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
341
347
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrDropdownMenuRadioGroup, isStandalone: true, selector: "[frDropdownMenuRadioGroup]", host: { classAttribute: "frame-dropdown-menu__radio-group" }, hostDirectives: [{ directive: i1.CdkMenuGroup }], ngImport: i0 });
@@ -350,16 +356,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
350
356
  },
351
357
  }]
352
358
  }] });
359
+ /** Item slot for dropdown menu radio. */
353
360
  class FrDropdownMenuRadioItem {
354
361
  radioItem = inject(CdkMenuItemRadio);
362
+ lastChecked = false;
355
363
  checked = input(false, { ...(ngDevMode ? { debugName: "checked" } : /* istanbul ignore next */ {}), alias: 'checked',
356
364
  transform: booleanAttribute });
357
365
  inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
358
366
  variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
359
- constructor() {
360
- effect(() => {
361
- this.radioItem.checked = this.checked();
362
- });
367
+ ngDoCheck() {
368
+ const checked = this.checked();
369
+ if (checked === this.lastChecked) {
370
+ return;
371
+ }
372
+ this.lastChecked = checked;
373
+ this.radioItem.checked = checked;
363
374
  }
364
375
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuRadioItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
365
376
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrDropdownMenuRadioItem, isStandalone: true, selector: "button[frDropdownMenuRadioItem]", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, inset: { classPropertyName: "inset", publicName: "inset", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-checked": "radioItem.checked ? \"\" : null", "attr.data-inset": "inset() ? \"\" : null", "attr.data-variant": "variant()" }, classAttribute: "frame-dropdown-menu__item frame-dropdown-menu__radio-item" }, hostDirectives: [{ directive: i1.CdkMenuItemRadio }], ngImport: i0 });
@@ -376,7 +387,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
376
387
  '[attr.data-variant]': 'variant()',
377
388
  },
378
389
  }]
379
- }], ctorParameters: () => [], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
390
+ }], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
391
+ /** Label slot for dropdown menu. */
380
392
  class FrDropdownMenuLabel {
381
393
  inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
382
394
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -392,6 +404,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
392
404
  },
393
405
  }]
394
406
  }], propDecorators: { inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }] } });
407
+ /** Separator slot for dropdown menu. */
395
408
  class FrDropdownMenuSeparator {
396
409
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
397
410
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrDropdownMenuSeparator, isStandalone: true, selector: "[frDropdownMenuSeparator]", host: { attributes: { "role": "separator" }, classAttribute: "frame-dropdown-menu__separator" }, ngImport: i0 });
@@ -406,6 +419,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
406
419
  },
407
420
  }]
408
421
  }] });
422
+ /** Shortcut slot for dropdown menu. */
409
423
  class FrDropdownMenuShortcut {
410
424
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuShortcut, deps: [], target: i0.ɵɵFactoryTarget.Directive });
411
425
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrDropdownMenuShortcut, isStandalone: true, selector: "[frDropdownMenuShortcut]", host: { classAttribute: "frame-dropdown-menu__shortcut" }, ngImport: i0 });
@@ -419,6 +433,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
419
433
  },
420
434
  }]
421
435
  }] });
436
+ /** Indicator slot for dropdown menu item. */
422
437
  class FrDropdownMenuItemIndicator {
423
438
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrDropdownMenuItemIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
424
439
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrDropdownMenuItemIndicator, isStandalone: true, selector: "[frDropdownMenuItemIndicator]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-dropdown-menu__indicator" }, ngImport: i0 });
@@ -434,6 +449,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
434
449
  }]
435
450
  }] });
436
451
 
452
+ /** Shared trigger behavior for root and nested dropdown menus. */
437
453
  class FrDropdownMenuTriggerBase {
438
454
  static CUSTOM_PROPERTY_PREFIX = '--frame-dropdown-menu-';
439
455
  cdkMenuTrigger = inject(CdkMenuTrigger);
@@ -442,20 +458,10 @@ class FrDropdownMenuTriggerBase {
442
458
  tree = inject(FrDropdownMenuTree);
443
459
  parent = inject(FR_DROPDOWN_MENU_PARENT);
444
460
  isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
461
+ menuContentOverride;
445
462
  constructor() {
446
463
  this.tree.register(this);
447
- effect(() => {
448
- const content = this.menuContent();
449
- this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;
450
- this.cdkMenuTrigger.menuPosition = this.resolvePositions();
451
- if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {
452
- queueMicrotask(() => {
453
- if (!this.cdkMenuTrigger.isOpen()) {
454
- this.cdkMenuTrigger.open();
455
- }
456
- });
457
- }
458
- });
464
+ queueMicrotask(() => this.syncCdkTrigger());
459
465
  this.cdkMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
460
466
  this.tree.cancelClose();
461
467
  this.isOpen.set(true);
@@ -464,7 +470,7 @@ class FrDropdownMenuTriggerBase {
464
470
  });
465
471
  });
466
472
  this.cdkMenuTrigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
467
- if (this.menuContent()?.isDebugVisible()) {
473
+ if (this.currentMenuContent()?.isDebugVisible()) {
468
474
  queueMicrotask(() => {
469
475
  if (!this.cdkMenuTrigger.isOpen()) {
470
476
  this.cdkMenuTrigger.open();
@@ -475,6 +481,9 @@ class FrDropdownMenuTriggerBase {
475
481
  this.isOpen.set(false);
476
482
  });
477
483
  }
484
+ ngDoCheck() {
485
+ this.syncCdkTrigger();
486
+ }
478
487
  get triggerMode() {
479
488
  return this.triggerModeInput() ?? this.parent.triggerMode();
480
489
  }
@@ -482,9 +491,24 @@ class FrDropdownMenuTriggerBase {
482
491
  return this.parent.closeDelay();
483
492
  }
484
493
  resolvePositions() {
485
- return (this.menuContent()?.getPositions(this.isSubmenuTrigger) ??
494
+ return (this.currentMenuContent()?.getPositions(this.isSubmenuTrigger) ??
486
495
  defaultPositions(this.isSubmenuTrigger));
487
496
  }
497
+ syncCdkTrigger() {
498
+ const content = this.currentMenuContent();
499
+ this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;
500
+ this.cdkMenuTrigger.menuPosition = this.resolvePositions();
501
+ if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {
502
+ queueMicrotask(() => {
503
+ if (!this.cdkMenuTrigger.isOpen()) {
504
+ this.cdkMenuTrigger.open();
505
+ }
506
+ });
507
+ }
508
+ }
509
+ currentMenuContent() {
510
+ return this.menuContentOverride !== undefined ? this.menuContentOverride : this.menuContent();
511
+ }
488
512
  openFromHover() {
489
513
  if (this.triggerMode === 'hover' || this.triggerMode === 'both') {
490
514
  this.tree.cancelClose();
@@ -498,7 +522,7 @@ class FrDropdownMenuTriggerBase {
498
522
  this.openFromHover();
499
523
  }
500
524
  handleMouseLeave() {
501
- if (this.menuContent()?.isDebugVisible()) {
525
+ if (this.currentMenuContent()?.isDebugVisible()) {
502
526
  return;
503
527
  }
504
528
  if (this.triggerMode === 'hover' || this.triggerMode === 'both') {
@@ -506,13 +530,23 @@ class FrDropdownMenuTriggerBase {
506
530
  }
507
531
  }
508
532
  close() {
509
- if (this.menuContent()?.isDebugVisible()) {
533
+ if (this.currentMenuContent()?.isDebugVisible()) {
510
534
  return;
511
535
  }
512
536
  if (this.cdkMenuTrigger.isOpen()) {
513
537
  this.cdkMenuTrigger.close();
514
538
  }
515
539
  }
540
+ open() {
541
+ this.syncCdkTrigger();
542
+ if (!this.cdkMenuTrigger.isOpen()) {
543
+ this.cdkMenuTrigger.open();
544
+ }
545
+ }
546
+ setMenuContentOverride(content) {
547
+ this.menuContentOverride = content;
548
+ this.syncCdkTrigger();
549
+ }
516
550
  ngOnDestroy() {
517
551
  this.tree.unregister(this);
518
552
  }
@@ -525,6 +559,7 @@ class FrDropdownMenuTriggerBase {
525
559
  }
526
560
  const menuPanel = overlayElement.querySelector('.frame-dropdown-menu__content') ?? overlayElement;
527
561
  const sourceStyles = getComputedStyle(this.elementRef.nativeElement);
562
+ // CDK portals the menu, so trigger-scoped CSS variables must be mirrored manually.
528
563
  for (let index = 0; index < sourceStyles.length; index += 1) {
529
564
  const propertyName = sourceStyles.item(index);
530
565
  if (!propertyName.startsWith(FrDropdownMenuTriggerBase.CUSTOM_PROPERTY_PREFIX)) {
@@ -547,6 +582,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
547
582
  },
548
583
  }]
549
584
  }], ctorParameters: () => [] });
585
+ /** Trigger control for dropdown menu. */
550
586
  class FrDropdownMenuTrigger extends FrDropdownMenuTriggerBase {
551
587
  menuContent = input(null, { ...(ngDevMode ? { debugName: "menuContent" } : /* istanbul ignore next */ {}), alias: 'frDropdownMenuTrigger' });
552
588
  triggerModeInput = input(null, { ...(ngDevMode ? { debugName: "triggerModeInput" } : /* istanbul ignore next */ {}), alias: 'triggerMode' });
@@ -565,6 +601,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
565
601
  },
566
602
  }]
567
603
  }], propDecorators: { menuContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "frDropdownMenuTrigger", required: false }] }], triggerModeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
604
+ /** Trigger control for dropdown menu sub. */
568
605
  class FrDropdownMenuSubTrigger extends FrDropdownMenuTriggerBase {
569
606
  menuContent = input(null, { ...(ngDevMode ? { debugName: "menuContent" } : /* istanbul ignore next */ {}), alias: 'frDropdownMenuSubTrigger' });
570
607
  inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-dropdown-menu.mjs","sources":["../../../projects/components/dropdown-menu/src/dropdown-menu.position.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.root.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.content.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.items.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.trigger.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.types.ts","../../../projects/components/dropdown-menu/dropdown-menu.module.ts","../../../projects/components/dropdown-menu/frame-ui-ng-components-dropdown-menu.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\r\n\r\nimport { FrDropdownMenuAlignment, FrDropdownMenuSide } from './dropdown-menu.types';\r\n\r\ntype ConcreteDropdownMenuSide = Exclude<FrDropdownMenuSide, 'auto'>;\r\n\r\nconst DEFAULT_SIDE_OFFSET = 4;\r\nconst MIN_SUBMENU_SIDE_OFFSET = 8;\r\n\r\nexport function defaultPositions(isSubmenu: boolean): ConnectedPosition[] {\r\n return buildConnectedPositions({\r\n align: 'start',\r\n alignOffset: 0,\r\n isSubmenu,\r\n side: 'auto',\r\n sideOffset: DEFAULT_SIDE_OFFSET,\r\n });\r\n}\r\n\r\nexport function buildConnectedPositions(options: {\r\n align: FrDropdownMenuAlignment;\r\n alignOffset: number;\r\n isSubmenu: boolean;\r\n side: FrDropdownMenuSide;\r\n sideOffset: number;\r\n}): ConnectedPosition[] {\r\n const side = normalizeSide(options.side, options.isSubmenu);\r\n\r\n if (side === 'auto') {\r\n return autoSides(options.isSubmenu).flatMap((side) =>\r\n primaryPlacement({\r\n ...options,\r\n side,\r\n }),\r\n );\r\n }\r\n\r\n return primaryPlacement({\r\n ...options,\r\n side,\r\n });\r\n}\r\n\r\nfunction primaryPlacement(options: {\r\n align: FrDropdownMenuAlignment;\r\n alignOffset: number;\r\n isSubmenu: boolean;\r\n side: ConcreteDropdownMenuSide;\r\n sideOffset: number;\r\n}): ConnectedPosition[] {\r\n if (options.side === 'left' || options.side === 'right') {\r\n const isRight = options.side === 'right';\r\n const sideOffset = options.isSubmenu\r\n ? Math.max(options.sideOffset, MIN_SUBMENU_SIDE_OFFSET)\r\n : options.sideOffset;\r\n const horizontalOffset = isRight ? sideOffset : -sideOffset;\r\n const originY = horizontalOriginY(options.align);\r\n const overlayY = horizontalOverlayY(options.align);\r\n\r\n return [\r\n {\r\n originX: isRight ? 'end' : 'start',\r\n originY,\r\n overlayX: isRight ? 'start' : 'end',\r\n overlayY,\r\n offsetX: horizontalOffset,\r\n offsetY: options.alignOffset,\r\n },\r\n {\r\n originX: isRight ? 'start' : 'end',\r\n originY,\r\n overlayX: isRight ? 'end' : 'start',\r\n overlayY,\r\n offsetX: -horizontalOffset,\r\n offsetY: options.alignOffset,\r\n },\r\n ];\r\n }\r\n\r\n const isBottom = options.side === 'bottom';\r\n const verticalOffset = isBottom ? options.sideOffset : -options.sideOffset;\r\n const originX = rootOriginX(options.align);\r\n const overlayX = rootOverlayX(options.align);\r\n\r\n return [\r\n {\r\n originX,\r\n originY: isBottom ? 'bottom' : 'top',\r\n overlayX,\r\n overlayY: isBottom ? 'top' : 'bottom',\r\n offsetX: options.alignOffset,\r\n offsetY: verticalOffset,\r\n },\r\n {\r\n originX,\r\n originY: isBottom ? 'top' : 'bottom',\r\n overlayX,\r\n overlayY: isBottom ? 'bottom' : 'top',\r\n offsetX: options.alignOffset,\r\n offsetY: -verticalOffset,\r\n },\r\n ];\r\n}\r\n\r\nfunction normalizeSide(side: FrDropdownMenuSide, isSubmenu: boolean): FrDropdownMenuSide {\r\n if (!isSubmenu || side === 'left' || side === 'right') {\r\n return side;\r\n }\r\n\r\n return 'auto';\r\n}\r\n\r\nfunction autoSides(isSubmenu: boolean): ConcreteDropdownMenuSide[] {\r\n return isSubmenu ? ['right', 'left'] : ['bottom', 'top', 'right', 'left'];\r\n}\r\n\r\nfunction rootOriginX(align: FrDropdownMenuAlignment): 'center' | 'end' | 'start' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align;\r\n}\r\n\r\nfunction rootOverlayX(align: FrDropdownMenuAlignment): 'center' | 'end' | 'start' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align;\r\n}\r\n\r\nfunction horizontalOriginY(align: FrDropdownMenuAlignment): 'bottom' | 'center' | 'top' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align === 'end' ? 'bottom' : 'top';\r\n}\r\n\r\nfunction horizontalOverlayY(align: FrDropdownMenuAlignment): 'bottom' | 'center' | 'top' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align === 'end' ? 'bottom' : 'top';\r\n}\r\n","import { Directive, Injectable, InjectionToken, effect, inject, input, signal } from '@angular/core';\n\nimport { FrDropdownMenuTriggerMode } from './dropdown-menu.types';\n\nexport interface FrDropdownMenuParent {\n readonly closeDelay: () => number;\n readonly triggerMode: () => FrDropdownMenuTriggerMode;\n}\n\nexport const FR_DROPDOWN_MENU_PARENT = new InjectionToken<FrDropdownMenuParent>(\n 'FrDropdownMenuParent',\n);\n\n@Injectable()\nexport class FrDropdownMenuTree {\n private readonly triggers = new Set<{ close(): void }>();\n private closeTimeoutId: ReturnType<typeof setTimeout> | null = null;\n private pointerInsideCount = 0;\n\n register(trigger: { close(): void }): void {\n this.triggers.add(trigger);\n }\n\n unregister(trigger: { close(): void }): void {\n this.triggers.delete(trigger);\n }\n\n cancelClose(): void {\n if (this.closeTimeoutId !== null) {\n clearTimeout(this.closeTimeoutId);\n this.closeTimeoutId = null;\n }\n }\n\n enterInteractiveArea(): void {\n this.pointerInsideCount += 1;\n this.cancelClose();\n }\n\n leaveInteractiveArea(delay: number): void {\n this.pointerInsideCount = Math.max(0, this.pointerInsideCount - 1);\n\n if (this.pointerInsideCount === 0) {\n this.scheduleClose(delay);\n }\n }\n\n scheduleClose(delay: number): void {\n this.cancelClose();\n this.closeTimeoutId = setTimeout(() => {\n this.closeAll();\n }, delay);\n }\n\n closeAll(): void {\n this.cancelClose();\n\n for (const trigger of this.triggers) {\n trigger.close();\n }\n }\n}\n\n@Directive({\n selector: '[frDropdownMenu]',\n providers: [\n FrDropdownMenuTree,\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useExisting: FrDropdownMenu,\n },\n ],\n host: {\n class: 'frame-dropdown-menu-root',\n },\n})\nexport class FrDropdownMenu implements FrDropdownMenuParent {\n readonly closeDelay = input(140);\n readonly triggerMode = input<FrDropdownMenuTriggerMode>('click');\n}\n\n@Directive({\n selector: '[frDropdownMenuSub]',\n providers: [\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useExisting: FrDropdownMenuSub,\n },\n ],\n host: {\n class: 'frame-dropdown-menu-sub',\n },\n})\nexport class FrDropdownMenuSub implements FrDropdownMenuParent {\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT, { skipSelf: true });\n\n readonly closeDelayInput = input<number | null>(null, { alias: 'closeDelay' });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n\n readonly closeDelay = signal(this.parent.closeDelay());\n readonly triggerMode = signal(this.parent.triggerMode());\n\n constructor() {\n effect(() => {\n this.closeDelay.set(this.closeDelayInput() ?? this.parent.closeDelay());\n this.triggerMode.set(this.triggerModeInput() ?? this.parent.triggerMode());\n });\n }\n}\n","import { CdkMenu, CdkTargetMenuAim } from '@angular/cdk/menu';\r\nimport { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport {\r\n Directive,\r\n InjectionToken,\r\n TemplateRef,\r\n booleanAttribute,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\n\r\nimport { buildConnectedPositions } from './dropdown-menu.position';\r\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from './dropdown-menu.root';\r\nimport { FrDropdownMenuAlignment, FrDropdownMenuSide } from './dropdown-menu.types';\r\n\r\nexport const FR_DROPDOWN_MENU_CONTENT = new InjectionToken<FrDropdownMenuContent>(\r\n 'FrDropdownMenuContent',\r\n);\r\n\r\n@Directive({\r\n selector: 'ng-template[frDropdownMenuContent], ng-template[frDropdownMenuSubContent]',\r\n exportAs: 'frDropdownMenuContent',\r\n providers: [\r\n {\r\n provide: FR_DROPDOWN_MENU_CONTENT,\r\n useExisting: FrDropdownMenuContent,\r\n },\r\n ],\r\n})\r\nexport class FrDropdownMenuContent {\r\n readonly templateRef = inject(TemplateRef<unknown>);\r\n\r\n readonly align = input<FrDropdownMenuAlignment>('start');\r\n readonly alignOffset = input(0);\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly side = input<FrDropdownMenuSide>('auto');\r\n readonly sideOffset = input(4);\r\n\r\n isDebugVisible(): boolean {\r\n return this.debugVisible();\r\n }\r\n\r\n getPositions(isSubmenu: boolean): ConnectedPosition[] {\r\n return buildConnectedPositions({\r\n align: this.align(),\r\n alignOffset: this.alignOffset(),\r\n isSubmenu,\r\n side: this.side(),\r\n sideOffset: this.sideOffset(),\r\n });\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frDropdownMenuPanel]',\r\n hostDirectives: [CdkMenu, CdkTargetMenuAim],\r\n host: {\r\n class: 'frame-dropdown-menu__content',\r\n '[attr.data-side]': 'side()',\r\n tabindex: '-1',\r\n '(mouseenter)': 'handleMouseEnter()',\r\n '(mouseleave)': 'handleMouseLeave()'\r\n },\r\n})\r\nexport class FrDropdownMenuPanel {\r\n protected readonly side = inject(FR_DROPDOWN_MENU_CONTENT).side;\r\n private readonly tree = inject(FrDropdownMenuTree);\r\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\r\n\r\n protected handleMouseEnter(): void {\r\n this.tree.enterInteractiveArea();\r\n }\r\n\r\n protected handleMouseLeave(): void {\r\n this.tree.leaveInteractiveArea(this.parent.closeDelay());\r\n }\r\n}\r\n","import { CdkMenuGroup, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuItemRadio } from '@angular/cdk/menu';\nimport { Directive, booleanAttribute, effect, inject, input } from '@angular/core';\n\nimport { FrDropdownMenuItemVariant } from './dropdown-menu.types';\n\n@Directive({\n selector: '[frDropdownMenuItem]',\n hostDirectives: [CdkMenuItem],\n host: {\n class: 'frame-dropdown-menu__item',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuItem {\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n}\n\n@Directive({\n selector: 'button[frDropdownMenuCheckboxItem]',\n hostDirectives: [CdkMenuItemCheckbox],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__checkbox-item',\n '[attr.data-checked]': 'checkboxItem.checked ? \"\" : null',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuCheckboxItem {\n protected readonly checkboxItem = inject(CdkMenuItemCheckbox);\n\n readonly checked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n\n constructor() {\n effect(() => {\n this.checkboxItem.checked = this.checked();\n });\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuRadioGroup]',\n hostDirectives: [CdkMenuGroup],\n host: {\n class: 'frame-dropdown-menu__radio-group',\n },\n})\nexport class FrDropdownMenuRadioGroup {}\n\n@Directive({\n selector: 'button[frDropdownMenuRadioItem]',\n hostDirectives: [CdkMenuItemRadio],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__radio-item',\n '[attr.data-checked]': 'radioItem.checked ? \"\" : null',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuRadioItem {\n protected readonly radioItem = inject(CdkMenuItemRadio);\n\n readonly checked = input(false, {\n alias: 'checked',\n transform: booleanAttribute,\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n\n constructor() {\n effect(() => {\n this.radioItem.checked = this.checked();\n });\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuLabel]',\n host: {\n class: 'frame-dropdown-menu__label',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n },\n})\nexport class FrDropdownMenuLabel {\n readonly inset = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[frDropdownMenuSeparator]',\n host: {\n class: 'frame-dropdown-menu__separator',\n role: 'separator',\n },\n})\nexport class FrDropdownMenuSeparator {}\n\n@Directive({\n selector: '[frDropdownMenuShortcut]',\n host: {\n class: 'frame-dropdown-menu__shortcut',\n },\n})\nexport class FrDropdownMenuShortcut {}\n\n@Directive({\n selector: '[frDropdownMenuItemIndicator]',\n host: {\n class: 'frame-dropdown-menu__indicator',\n 'aria-hidden': 'true',\n },\n})\nexport class FrDropdownMenuItemIndicator {}\n","import { CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n InputSignal,\n booleanAttribute,\n effect,\n inject,\n input,\n signal,\n OnDestroy,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { FrDropdownMenuContent } from './dropdown-menu.content';\nimport { defaultPositions } from './dropdown-menu.position';\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from './dropdown-menu.root';\nimport { FrDropdownMenuItemVariant, FrDropdownMenuTriggerMode } from './dropdown-menu.types';\n\n@Directive({\n host: {\n '(mouseenter)': 'handleMouseEnter()',\n '(mouseleave)': 'handleMouseLeave()',\n },\n})\nabstract class FrDropdownMenuTriggerBase implements OnDestroy {\n private static readonly CUSTOM_PROPERTY_PREFIX = '--frame-dropdown-menu-';\n\n protected readonly cdkMenuTrigger = inject(CdkMenuTrigger);\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly tree = inject(FrDropdownMenuTree);\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\n protected readonly isOpen = signal(false);\n\n constructor() {\n this.tree.register(this);\n\n effect(() => {\n const content = this.menuContent();\n\n this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;\n this.cdkMenuTrigger.menuPosition = this.resolvePositions();\n\n if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {\n queueMicrotask(() => {\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n });\n }\n });\n\n this.cdkMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.tree.cancelClose();\n this.isOpen.set(true);\n queueMicrotask(() => {\n this.syncCustomPropertiesToOverlay();\n });\n });\n\n this.cdkMenuTrigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (this.menuContent()?.isDebugVisible()) {\n queueMicrotask(() => {\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n });\n return;\n }\n\n this.isOpen.set(false);\n });\n }\n\n protected abstract readonly menuContent: () => FrDropdownMenuContent | null;\n protected abstract readonly isSubmenuTrigger: boolean;\n protected abstract readonly triggerModeInput: InputSignal<FrDropdownMenuTriggerMode | null>;\n\n protected get triggerMode(): FrDropdownMenuTriggerMode {\n return this.triggerModeInput() ?? this.parent.triggerMode();\n }\n\n protected get closeDelay(): number {\n return this.parent.closeDelay();\n }\n\n protected resolvePositions(): ConnectedPosition[] {\n return (\n this.menuContent()?.getPositions(this.isSubmenuTrigger) ??\n defaultPositions(this.isSubmenuTrigger)\n );\n }\n\n protected openFromHover(): void {\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\n this.tree.cancelClose();\n\n if (!this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.open();\n }\n }\n }\n\n protected handleMouseEnter(): void {\n this.tree.enterInteractiveArea();\n this.openFromHover();\n }\n\n protected handleMouseLeave(): void {\n if (this.menuContent()?.isDebugVisible()) {\n return;\n }\n\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\n this.tree.leaveInteractiveArea(this.closeDelay);\n }\n }\n\n close(): void {\n if (this.menuContent()?.isDebugVisible()) {\n return;\n }\n\n if (this.cdkMenuTrigger.isOpen()) {\n this.cdkMenuTrigger.close();\n }\n }\n\n ngOnDestroy(): void {\n this.tree.unregister(this);\n }\n\n private syncCustomPropertiesToOverlay(): void {\n const overlayRef = (this.cdkMenuTrigger as unknown as { overlayRef?: { overlayElement?: HTMLElement | null } })\n .overlayRef;\n const overlayElement = overlayRef?.overlayElement ?? null;\n\n if (!overlayElement) {\n return;\n }\n\n const menuPanel =\n overlayElement.querySelector<HTMLElement>('.frame-dropdown-menu__content') ?? overlayElement;\n const sourceStyles = getComputedStyle(this.elementRef.nativeElement);\n\n for (let index = 0; index < sourceStyles.length; index += 1) {\n const propertyName = sourceStyles.item(index);\n\n if (!propertyName.startsWith(FrDropdownMenuTriggerBase.CUSTOM_PROPERTY_PREFIX)) {\n continue;\n }\n\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\n\n overlayElement.style.setProperty(propertyName, propertyValue);\n menuPanel.style.setProperty(propertyName, propertyValue);\n }\n }\n}\n\n@Directive({\n selector: '[frDropdownMenuTrigger]',\n hostDirectives: [CdkMenuTrigger],\n host: {\n class: 'frame-dropdown-menu__trigger',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n },\n})\nexport class FrDropdownMenuTrigger extends FrDropdownMenuTriggerBase {\n readonly menuContent = input<FrDropdownMenuContent | null>(null, {\n alias: 'frDropdownMenuTrigger',\n });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n protected readonly isSubmenuTrigger = false;\n}\n\n@Directive({\n selector: '[frDropdownMenuSubTrigger]',\n hostDirectives: [CdkMenuItem, CdkMenuTrigger],\n host: {\n class: 'frame-dropdown-menu__item frame-dropdown-menu__sub-trigger',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrDropdownMenuSubTrigger extends FrDropdownMenuTriggerBase {\n readonly menuContent = input<FrDropdownMenuContent | null>(null, {\n alias: 'frDropdownMenuSubTrigger',\n });\n readonly inset = input(false, { transform: booleanAttribute });\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\n alias: 'triggerMode',\n });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n protected readonly isSubmenuTrigger = true;\n}\n","export const FR_DROPDOWN_MENU_ALIGNMENTS = ['center', 'end', 'start'] as const;\r\nexport const FR_DROPDOWN_MENU_SIDES = ['auto', 'bottom', 'left', 'right', 'top'] as const;\r\nexport const FR_DROPDOWN_MENU_TRIGGER_MODES = ['both', 'click', 'hover'] as const;\r\nexport const FR_DROPDOWN_MENU_ITEM_VARIANTS = ['default', 'destructive'] as const;\r\n\r\nexport type FrDropdownMenuAlignment = (typeof FR_DROPDOWN_MENU_ALIGNMENTS)[number];\r\nexport type FrDropdownMenuSide = (typeof FR_DROPDOWN_MENU_SIDES)[number];\r\nexport type FrDropdownMenuTriggerMode = (typeof FR_DROPDOWN_MENU_TRIGGER_MODES)[number];\r\nexport type FrDropdownMenuItemVariant = (typeof FR_DROPDOWN_MENU_ITEM_VARIANTS)[number];\r\n","import { NgModule } from '@angular/core';\nimport {\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n} from './src/dropdown-menu';\n\n@NgModule({\n imports: [\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n ],\n exports: [\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n ],\n})\nexport class FrDropdownMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-ui-ng-components-dropdown-menu.mjs","sources":["../../../projects/components/dropdown-menu/src/dropdown-menu.position.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.root.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.content.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.items.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.trigger.ts","../../../projects/components/dropdown-menu/src/dropdown-menu.types.ts","../../../projects/components/dropdown-menu/dropdown-menu.module.ts","../../../projects/components/dropdown-menu/frame-ui-ng-components-dropdown-menu.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\r\n\r\nimport { FrDropdownMenuAlignment, FrDropdownMenuSide } from './dropdown-menu.types';\r\n\r\ntype ConcreteDropdownMenuSide = Exclude<FrDropdownMenuSide, 'auto'>;\r\n\r\nconst DEFAULT_SIDE_OFFSET = 4;\r\nconst MIN_SUBMENU_SIDE_OFFSET = 8;\r\n\r\nexport function defaultPositions(isSubmenu: boolean): ConnectedPosition[] {\r\n return buildConnectedPositions({\r\n align: 'start',\r\n alignOffset: 0,\r\n isSubmenu,\r\n side: 'auto',\r\n sideOffset: DEFAULT_SIDE_OFFSET,\r\n });\r\n}\r\n\r\nexport function buildConnectedPositions(options: {\r\n align: FrDropdownMenuAlignment;\r\n alignOffset: number;\r\n isSubmenu: boolean;\r\n side: FrDropdownMenuSide;\r\n sideOffset: number;\r\n}): ConnectedPosition[] {\r\n const side = normalizeSide(options.side, options.isSubmenu);\r\n\r\n if (side === 'auto') {\r\n return autoSides(options.isSubmenu).flatMap((side) =>\r\n primaryPlacement({\r\n ...options,\r\n side,\r\n }),\r\n );\r\n }\r\n\r\n return primaryPlacement({\r\n ...options,\r\n side,\r\n });\r\n}\r\n\r\nfunction primaryPlacement(options: {\r\n align: FrDropdownMenuAlignment;\r\n alignOffset: number;\r\n isSubmenu: boolean;\r\n side: ConcreteDropdownMenuSide;\r\n sideOffset: number;\r\n}): ConnectedPosition[] {\r\n if (options.side === 'left' || options.side === 'right') {\r\n const isRight = options.side === 'right';\r\n const sideOffset = options.isSubmenu\r\n ? Math.max(options.sideOffset, MIN_SUBMENU_SIDE_OFFSET)\r\n : options.sideOffset;\r\n const horizontalOffset = isRight ? sideOffset : -sideOffset;\r\n const originY = horizontalOriginY(options.align);\r\n const overlayY = horizontalOverlayY(options.align);\r\n\r\n return [\r\n {\r\n originX: isRight ? 'end' : 'start',\r\n originY,\r\n overlayX: isRight ? 'start' : 'end',\r\n overlayY,\r\n offsetX: horizontalOffset,\r\n offsetY: options.alignOffset,\r\n },\r\n {\r\n originX: isRight ? 'start' : 'end',\r\n originY,\r\n overlayX: isRight ? 'end' : 'start',\r\n overlayY,\r\n offsetX: -horizontalOffset,\r\n offsetY: options.alignOffset,\r\n },\r\n ];\r\n }\r\n\r\n const isBottom = options.side === 'bottom';\r\n const verticalOffset = isBottom ? options.sideOffset : -options.sideOffset;\r\n const originX = rootOriginX(options.align);\r\n const overlayX = rootOverlayX(options.align);\r\n\r\n return [\r\n {\r\n originX,\r\n originY: isBottom ? 'bottom' : 'top',\r\n overlayX,\r\n overlayY: isBottom ? 'top' : 'bottom',\r\n offsetX: options.alignOffset,\r\n offsetY: verticalOffset,\r\n },\r\n {\r\n originX,\r\n originY: isBottom ? 'top' : 'bottom',\r\n overlayX,\r\n overlayY: isBottom ? 'bottom' : 'top',\r\n offsetX: options.alignOffset,\r\n offsetY: -verticalOffset,\r\n },\r\n ];\r\n}\r\n\r\nfunction normalizeSide(side: FrDropdownMenuSide, isSubmenu: boolean): FrDropdownMenuSide {\r\n if (!isSubmenu || side === 'left' || side === 'right') {\r\n return side;\r\n }\r\n\r\n return 'auto';\r\n}\r\n\r\nfunction autoSides(isSubmenu: boolean): ConcreteDropdownMenuSide[] {\r\n return isSubmenu ? ['right', 'left'] : ['bottom', 'top', 'right', 'left'];\r\n}\r\n\r\nfunction rootOriginX(align: FrDropdownMenuAlignment): 'center' | 'end' | 'start' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align;\r\n}\r\n\r\nfunction rootOverlayX(align: FrDropdownMenuAlignment): 'center' | 'end' | 'start' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align;\r\n}\r\n\r\nfunction horizontalOriginY(align: FrDropdownMenuAlignment): 'bottom' | 'center' | 'top' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align === 'end' ? 'bottom' : 'top';\r\n}\r\n\r\nfunction horizontalOverlayY(align: FrDropdownMenuAlignment): 'bottom' | 'center' | 'top' {\r\n if (align === 'center') {\r\n return 'center';\r\n }\r\n\r\n return align === 'end' ? 'bottom' : 'top';\r\n}\r\n","import { Directive, Injectable, InjectionToken, computed, inject, input } from '@angular/core';\r\n\r\nimport { FrDropdownMenuTriggerMode } from './dropdown-menu.types';\r\n\r\nexport interface FrDropdownMenuParent {\r\n readonly closeDelay: () => number;\r\n readonly triggerMode: () => FrDropdownMenuTriggerMode;\r\n}\r\n\r\nexport const FR_DROPDOWN_MENU_PARENT = new InjectionToken<FrDropdownMenuParent>(\r\n 'FrDropdownMenuParent',\r\n);\r\n\r\n/** Shared registry for nested dropdown menu state. */\r\n@Injectable()\r\nexport class FrDropdownMenuTree {\r\n private readonly triggers = new Set<{ close(): void }>();\r\n private closeTimeoutId: ReturnType<typeof setTimeout> | null = null;\r\n private pointerInsideCount = 0;\r\n\r\n register(trigger: { close(): void }): void {\r\n this.triggers.add(trigger);\r\n }\r\n\r\n unregister(trigger: { close(): void }): void {\r\n this.triggers.delete(trigger);\r\n }\r\n\r\n cancelClose(): void {\r\n if (this.closeTimeoutId !== null) {\r\n clearTimeout(this.closeTimeoutId);\r\n this.closeTimeoutId = null;\r\n }\r\n }\r\n\r\n enterInteractiveArea(): void {\r\n this.pointerInsideCount += 1;\r\n this.cancelClose();\r\n }\r\n\r\n leaveInteractiveArea(delay: number): void {\r\n this.pointerInsideCount = Math.max(0, this.pointerInsideCount - 1);\r\n\r\n if (this.pointerInsideCount === 0) {\r\n this.scheduleClose(delay);\r\n }\r\n }\r\n\r\n scheduleClose(delay: number): void {\r\n this.cancelClose();\r\n this.closeTimeoutId = setTimeout(() => {\r\n this.closeAll();\r\n }, delay);\r\n }\r\n\r\n closeAll(): void {\r\n this.cancelClose();\r\n\r\n for (const trigger of this.triggers) {\r\n trigger.close();\r\n }\r\n }\r\n}\r\n\r\n/** Root controller for dropdown menu interactions. */\r\n@Directive({\r\n selector: '[frDropdownMenu]',\r\n providers: [\r\n FrDropdownMenuTree,\r\n {\r\n provide: FR_DROPDOWN_MENU_PARENT,\r\n useExisting: FrDropdownMenu,\r\n },\r\n ],\r\n host: {\r\n class: 'frame-dropdown-menu-root',\r\n },\r\n})\r\nexport class FrDropdownMenu implements FrDropdownMenuParent {\r\n readonly closeDelay = input(140);\r\n readonly triggerMode = input<FrDropdownMenuTriggerMode>('click');\r\n}\r\n\r\n/** Nested submenu controller for dropdown menu. */\r\n@Directive({\r\n selector: '[frDropdownMenuSub]',\r\n providers: [\r\n {\r\n provide: FR_DROPDOWN_MENU_PARENT,\r\n useExisting: FrDropdownMenuSub,\r\n },\r\n ],\r\n host: {\r\n class: 'frame-dropdown-menu-sub',\r\n },\r\n})\r\nexport class FrDropdownMenuSub implements FrDropdownMenuParent {\r\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT, { skipSelf: true });\r\n\r\n readonly closeDelayInput = input<number | null>(null, { alias: 'closeDelay' });\r\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\r\n alias: 'triggerMode',\r\n });\r\n\r\n readonly closeDelay = computed(() => this.closeDelayInput() ?? this.parent.closeDelay());\r\n readonly triggerMode = computed(() => this.triggerModeInput() ?? this.parent.triggerMode());\r\n}\r\n\r\n","import { CdkMenu, CdkTargetMenuAim } from '@angular/cdk/menu';\r\nimport { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport {\r\n Directive,\r\n InjectionToken,\r\n TemplateRef,\r\n booleanAttribute,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\n\r\nimport { buildConnectedPositions } from './dropdown-menu.position';\r\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from './dropdown-menu.root';\r\nimport { FrDropdownMenuAlignment, FrDropdownMenuSide } from './dropdown-menu.types';\r\n\r\nexport const FR_DROPDOWN_MENU_CONTENT = new InjectionToken<FrDropdownMenuContent>(\r\n 'FrDropdownMenuContent',\r\n);\r\n\r\n/** Content slot for dropdown menu. */\r\n@Directive({\r\n selector: 'ng-template[frDropdownMenuContent], ng-template[frDropdownMenuSubContent]',\r\n exportAs: 'frDropdownMenuContent',\r\n providers: [\r\n {\r\n provide: FR_DROPDOWN_MENU_CONTENT,\r\n useExisting: FrDropdownMenuContent,\r\n },\r\n ],\r\n})\r\nexport class FrDropdownMenuContent {\r\n readonly templateRef = inject(TemplateRef<unknown>);\r\n\r\n readonly align = input<FrDropdownMenuAlignment>('start');\r\n readonly alignOffset = input(0);\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly side = input<FrDropdownMenuSide>('auto');\r\n readonly sideOffset = input(4);\r\n\r\n isDebugVisible(): boolean {\r\n return this.debugVisible();\r\n }\r\n\r\n getPositions(isSubmenu: boolean): ConnectedPosition[] {\r\n return buildConnectedPositions({\r\n align: this.align(),\r\n alignOffset: this.alignOffset(),\r\n isSubmenu,\r\n side: this.side(),\r\n sideOffset: this.sideOffset(),\r\n });\r\n }\r\n}\r\n\r\n/** Panel slot for dropdown menu. */\r\n@Directive({\r\n selector: '[frDropdownMenuPanel]',\r\n hostDirectives: [CdkMenu, CdkTargetMenuAim],\r\n host: {\r\n class: 'frame-dropdown-menu__content',\r\n '[attr.data-side]': 'side()',\r\n tabindex: '-1',\r\n '(mouseenter)': 'handleMouseEnter()',\r\n '(mouseleave)': 'handleMouseLeave()'\r\n },\r\n})\r\nexport class FrDropdownMenuPanel {\r\n protected readonly side = inject(FR_DROPDOWN_MENU_CONTENT).side;\r\n private readonly tree = inject(FrDropdownMenuTree);\r\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\r\n\r\n protected handleMouseEnter(): void {\r\n this.tree.enterInteractiveArea();\r\n }\r\n\r\n protected handleMouseLeave(): void {\r\n this.tree.leaveInteractiveArea(this.parent.closeDelay());\r\n }\r\n}\r\n","import { CdkMenuGroup, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuItemRadio } from '@angular/cdk/menu';\r\nimport { Directive, DoCheck, booleanAttribute, inject, input } from '@angular/core';\r\n\r\nimport { FrDropdownMenuItemVariant } from './dropdown-menu.types';\r\n\r\n/** Item slot for dropdown menu. */\r\n@Directive({\r\n selector: '[frDropdownMenuItem]',\r\n hostDirectives: [CdkMenuItem],\r\n host: {\r\n class: 'frame-dropdown-menu__item',\r\n '[attr.data-inset]': 'inset() ? \"\" : null',\r\n '[attr.data-variant]': 'variant()',\r\n },\r\n})\r\nexport class FrDropdownMenuItem {\r\n readonly inset = input(false, { transform: booleanAttribute });\r\n readonly variant = input<FrDropdownMenuItemVariant>('default');\r\n}\r\n\r\n/** Item slot for dropdown menu checkbox. */\r\n@Directive({\r\n selector: 'button[frDropdownMenuCheckboxItem]',\r\n hostDirectives: [CdkMenuItemCheckbox],\r\n host: {\r\n class: 'frame-dropdown-menu__item frame-dropdown-menu__checkbox-item',\r\n '[attr.data-checked]': 'checkboxItem.checked ? \"\" : null',\r\n '[attr.data-inset]': 'inset() ? \"\" : null',\r\n '[attr.data-variant]': 'variant()',\r\n },\r\n})\r\nexport class FrDropdownMenuCheckboxItem implements DoCheck {\r\n protected readonly checkboxItem = inject(CdkMenuItemCheckbox);\r\n private lastChecked = false;\r\n\r\n readonly checked = input(false, {\r\n alias: 'checked',\r\n transform: booleanAttribute,\r\n });\r\n readonly inset = input(false, { transform: booleanAttribute });\r\n readonly variant = input<FrDropdownMenuItemVariant>('default');\r\n\r\n ngDoCheck(): void {\r\n const checked = this.checked();\r\n\r\n if (checked === this.lastChecked) {\r\n return;\r\n }\r\n\r\n this.lastChecked = checked;\r\n this.checkboxItem.checked = checked;\r\n }\r\n}\r\n\r\n/** Group slot for dropdown menu radio. */\r\n@Directive({\r\n selector: '[frDropdownMenuRadioGroup]',\r\n hostDirectives: [CdkMenuGroup],\r\n host: {\r\n class: 'frame-dropdown-menu__radio-group',\r\n },\r\n})\r\nexport class FrDropdownMenuRadioGroup {}\r\n\r\n/** Item slot for dropdown menu radio. */\r\n@Directive({\r\n selector: 'button[frDropdownMenuRadioItem]',\r\n hostDirectives: [CdkMenuItemRadio],\r\n host: {\r\n class: 'frame-dropdown-menu__item frame-dropdown-menu__radio-item',\r\n '[attr.data-checked]': 'radioItem.checked ? \"\" : null',\r\n '[attr.data-inset]': 'inset() ? \"\" : null',\r\n '[attr.data-variant]': 'variant()',\r\n },\r\n})\r\nexport class FrDropdownMenuRadioItem implements DoCheck {\r\n protected readonly radioItem = inject(CdkMenuItemRadio);\r\n private lastChecked = false;\r\n\r\n readonly checked = input(false, {\r\n alias: 'checked',\r\n transform: booleanAttribute,\r\n });\r\n readonly inset = input(false, { transform: booleanAttribute });\r\n readonly variant = input<FrDropdownMenuItemVariant>('default');\r\n\r\n ngDoCheck(): void {\r\n const checked = this.checked();\r\n\r\n if (checked === this.lastChecked) {\r\n return;\r\n }\r\n\r\n this.lastChecked = checked;\r\n this.radioItem.checked = checked;\r\n }\r\n}\r\n\r\n/** Label slot for dropdown menu. */\r\n@Directive({\r\n selector: '[frDropdownMenuLabel]',\r\n host: {\r\n class: 'frame-dropdown-menu__label',\r\n '[attr.data-inset]': 'inset() ? \"\" : null',\r\n },\r\n})\r\nexport class FrDropdownMenuLabel {\r\n readonly inset = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n/** Separator slot for dropdown menu. */\r\n@Directive({\r\n selector: '[frDropdownMenuSeparator]',\r\n host: {\r\n class: 'frame-dropdown-menu__separator',\r\n role: 'separator',\r\n },\r\n})\r\nexport class FrDropdownMenuSeparator {}\r\n\r\n/** Shortcut slot for dropdown menu. */\r\n@Directive({\r\n selector: '[frDropdownMenuShortcut]',\r\n host: {\r\n class: 'frame-dropdown-menu__shortcut',\r\n },\r\n})\r\nexport class FrDropdownMenuShortcut {}\r\n\r\n/** Indicator slot for dropdown menu item. */\r\n@Directive({\r\n selector: '[frDropdownMenuItemIndicator]',\r\n host: {\r\n class: 'frame-dropdown-menu__indicator',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrDropdownMenuItemIndicator {}\r\n","import { CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\r\nimport { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport {\r\n DestroyRef,\r\n Directive,\r\n DoCheck,\r\n ElementRef,\r\n InputSignal,\r\n OnDestroy,\r\n booleanAttribute,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { FrDropdownMenuContent } from './dropdown-menu.content';\r\nimport { defaultPositions } from './dropdown-menu.position';\r\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from './dropdown-menu.root';\r\nimport { FrDropdownMenuItemVariant, FrDropdownMenuTriggerMode } from './dropdown-menu.types';\r\n\r\n/** Shared trigger behavior for root and nested dropdown menus. */\r\n@Directive({\r\n host: {\r\n '(mouseenter)': 'handleMouseEnter()',\r\n '(mouseleave)': 'handleMouseLeave()',\r\n },\r\n})\r\nabstract class FrDropdownMenuTriggerBase implements DoCheck, OnDestroy {\r\n private static readonly CUSTOM_PROPERTY_PREFIX = '--frame-dropdown-menu-';\r\n\r\n protected readonly cdkMenuTrigger = inject(CdkMenuTrigger);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly tree = inject(FrDropdownMenuTree);\r\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\r\n protected readonly isOpen = signal(false);\r\n private menuContentOverride: FrDropdownMenuContent | null | undefined;\r\n\r\n constructor() {\r\n this.tree.register(this);\r\n queueMicrotask(() => this.syncCdkTrigger());\r\n\r\n this.cdkMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n this.tree.cancelClose();\r\n this.isOpen.set(true);\r\n queueMicrotask(() => {\r\n this.syncCustomPropertiesToOverlay();\r\n });\r\n });\r\n\r\n this.cdkMenuTrigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n if (this.currentMenuContent()?.isDebugVisible()) {\r\n queueMicrotask(() => {\r\n if (!this.cdkMenuTrigger.isOpen()) {\r\n this.cdkMenuTrigger.open();\r\n }\r\n });\r\n return;\r\n }\r\n\r\n this.isOpen.set(false);\r\n });\r\n }\r\n\r\n protected abstract readonly menuContent: () => FrDropdownMenuContent | null;\r\n protected abstract readonly isSubmenuTrigger: boolean;\r\n protected abstract readonly triggerModeInput: InputSignal<FrDropdownMenuTriggerMode | null>;\r\n\r\n ngDoCheck(): void {\r\n this.syncCdkTrigger();\r\n }\r\n\r\n protected get triggerMode(): FrDropdownMenuTriggerMode {\r\n return this.triggerModeInput() ?? this.parent.triggerMode();\r\n }\r\n\r\n protected get closeDelay(): number {\r\n return this.parent.closeDelay();\r\n }\r\n\r\n protected resolvePositions(): ConnectedPosition[] {\r\n return (\r\n this.currentMenuContent()?.getPositions(this.isSubmenuTrigger) ??\r\n defaultPositions(this.isSubmenuTrigger)\r\n );\r\n }\r\n\r\n private syncCdkTrigger(): void {\r\n const content = this.currentMenuContent();\r\n\r\n this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;\r\n this.cdkMenuTrigger.menuPosition = this.resolvePositions();\r\n\r\n if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {\r\n queueMicrotask(() => {\r\n if (!this.cdkMenuTrigger.isOpen()) {\r\n this.cdkMenuTrigger.open();\r\n }\r\n });\r\n }\r\n }\r\n\r\n private currentMenuContent(): FrDropdownMenuContent | null {\r\n return this.menuContentOverride !== undefined ? this.menuContentOverride : this.menuContent();\r\n }\r\n\r\n protected openFromHover(): void {\r\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\r\n this.tree.cancelClose();\r\n\r\n if (!this.cdkMenuTrigger.isOpen()) {\r\n this.cdkMenuTrigger.open();\r\n }\r\n }\r\n }\r\n\r\n protected handleMouseEnter(): void {\r\n this.tree.enterInteractiveArea();\r\n this.openFromHover();\r\n }\r\n\r\n protected handleMouseLeave(): void {\r\n if (this.currentMenuContent()?.isDebugVisible()) {\r\n return;\r\n }\r\n\r\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\r\n this.tree.leaveInteractiveArea(this.closeDelay);\r\n }\r\n }\r\n\r\n close(): void {\r\n if (this.currentMenuContent()?.isDebugVisible()) {\r\n return;\r\n }\r\n\r\n if (this.cdkMenuTrigger.isOpen()) {\r\n this.cdkMenuTrigger.close();\r\n }\r\n }\r\n\r\n open(): void {\r\n this.syncCdkTrigger();\r\n\r\n if (!this.cdkMenuTrigger.isOpen()) {\r\n this.cdkMenuTrigger.open();\r\n }\r\n }\r\n\r\n setMenuContentOverride(content: FrDropdownMenuContent | null): void {\r\n this.menuContentOverride = content;\r\n this.syncCdkTrigger();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.tree.unregister(this);\r\n }\r\n\r\n private syncCustomPropertiesToOverlay(): void {\r\n const overlayRef = (this.cdkMenuTrigger as unknown as { overlayRef?: { overlayElement?: HTMLElement | null } })\r\n .overlayRef;\r\n const overlayElement = overlayRef?.overlayElement ?? null;\r\n\r\n if (!overlayElement) {\r\n return;\r\n }\r\n\r\n const menuPanel =\r\n overlayElement.querySelector<HTMLElement>('.frame-dropdown-menu__content') ?? overlayElement;\r\n const sourceStyles = getComputedStyle(this.elementRef.nativeElement);\r\n\r\n // CDK portals the menu, so trigger-scoped CSS variables must be mirrored manually.\r\n for (let index = 0; index < sourceStyles.length; index += 1) {\r\n const propertyName = sourceStyles.item(index);\r\n\r\n if (!propertyName.startsWith(FrDropdownMenuTriggerBase.CUSTOM_PROPERTY_PREFIX)) {\r\n continue;\r\n }\r\n\r\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\r\n\r\n overlayElement.style.setProperty(propertyName, propertyValue);\r\n menuPanel.style.setProperty(propertyName, propertyValue);\r\n }\r\n }\r\n}\r\n\r\n/** Trigger control for dropdown menu. */\r\n@Directive({\r\n selector: '[frDropdownMenuTrigger]',\r\n hostDirectives: [CdkMenuTrigger],\r\n host: {\r\n class: 'frame-dropdown-menu__trigger',\r\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\r\n },\r\n})\r\nexport class FrDropdownMenuTrigger extends FrDropdownMenuTriggerBase {\r\n readonly menuContent = input<FrDropdownMenuContent | null>(null, {\r\n alias: 'frDropdownMenuTrigger',\r\n });\r\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\r\n alias: 'triggerMode',\r\n });\r\n protected readonly isSubmenuTrigger = false;\r\n}\r\n\r\n/** Trigger control for dropdown menu sub. */\r\n@Directive({\r\n selector: '[frDropdownMenuSubTrigger]',\r\n hostDirectives: [CdkMenuItem, CdkMenuTrigger],\r\n host: {\r\n class: 'frame-dropdown-menu__item frame-dropdown-menu__sub-trigger',\r\n '[attr.data-inset]': 'inset() ? \"\" : null',\r\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\r\n '[attr.data-variant]': 'variant()',\r\n },\r\n})\r\nexport class FrDropdownMenuSubTrigger extends FrDropdownMenuTriggerBase {\r\n readonly menuContent = input<FrDropdownMenuContent | null>(null, {\r\n alias: 'frDropdownMenuSubTrigger',\r\n });\r\n readonly inset = input(false, { transform: booleanAttribute });\r\n readonly triggerModeInput = input<FrDropdownMenuTriggerMode | null>(null, {\r\n alias: 'triggerMode',\r\n });\r\n readonly variant = input<FrDropdownMenuItemVariant>('default');\r\n protected readonly isSubmenuTrigger = true;\r\n}\r\n","export const FR_DROPDOWN_MENU_ALIGNMENTS = ['center', 'end', 'start'] as const;\r\nexport const FR_DROPDOWN_MENU_SIDES = ['auto', 'bottom', 'left', 'right', 'top'] as const;\r\nexport const FR_DROPDOWN_MENU_TRIGGER_MODES = ['both', 'click', 'hover'] as const;\r\nexport const FR_DROPDOWN_MENU_ITEM_VARIANTS = ['default', 'destructive'] as const;\r\n\r\nexport type FrDropdownMenuAlignment = (typeof FR_DROPDOWN_MENU_ALIGNMENTS)[number];\r\nexport type FrDropdownMenuSide = (typeof FR_DROPDOWN_MENU_SIDES)[number];\r\nexport type FrDropdownMenuTriggerMode = (typeof FR_DROPDOWN_MENU_TRIGGER_MODES)[number];\r\nexport type FrDropdownMenuItemVariant = (typeof FR_DROPDOWN_MENU_ITEM_VARIANTS)[number];\r\n","import { NgModule } from '@angular/core';\nimport {\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n} from './src/dropdown-menu';\n\n@NgModule({\n imports: [\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n ],\n exports: [\n FrDropdownMenu,\n FrDropdownMenuCheckboxItem,\n FrDropdownMenuContent,\n FrDropdownMenuItem,\n FrDropdownMenuItemIndicator,\n FrDropdownMenuLabel,\n FrDropdownMenuPanel,\n FrDropdownMenuRadioGroup,\n FrDropdownMenuRadioItem,\n FrDropdownMenuSeparator,\n FrDropdownMenuShortcut,\n FrDropdownMenuSub,\n FrDropdownMenuSubTrigger,\n FrDropdownMenuTrigger,\n ],\n})\nexport class FrDropdownMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { input, Directive, NgModule } from '@angular/core';
4
4
  const FR_EMPTY_MEDIA_VARIANTS = ['default', 'icon'];
5
5
  const FR_EMPTY_ORIENTATIONS = ['vertical', 'horizontal'];
6
6
  const FR_EMPTY_VARIANTS = ['default', 'outline', 'soft'];
7
+ /** Empty-state container with orientation and variant controls. */
7
8
  class FrEmpty {
8
9
  orientation = input('vertical', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
9
10
  variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
@@ -21,6 +22,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
21
22
  },
22
23
  }]
23
24
  }], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
25
+ /** Header slot for empty. */
24
26
  class FrEmptyHeader {
25
27
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrEmptyHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
26
28
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrEmptyHeader, isStandalone: true, selector: "[frEmptyHeader], frame-empty-header", host: { classAttribute: "frame-empty__header" }, ngImport: i0 });
@@ -34,6 +36,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
34
36
  },
35
37
  }]
36
38
  }] });
39
+ /** Media slot for empty. */
37
40
  class FrEmptyMedia {
38
41
  variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
39
42
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrEmptyMedia, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -49,6 +52,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
49
52
  },
50
53
  }]
51
54
  }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
55
+ /** Title slot for empty. */
52
56
  class FrEmptyTitle {
53
57
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrEmptyTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
54
58
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrEmptyTitle, isStandalone: true, selector: "[frEmptyTitle], frame-empty-title", host: { classAttribute: "frame-empty__title" }, ngImport: i0 });
@@ -62,6 +66,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
62
66
  },
63
67
  }]
64
68
  }] });
69
+ /** Description slot for empty. */
65
70
  class FrEmptyDescription {
66
71
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrEmptyDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
67
72
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrEmptyDescription, isStandalone: true, selector: "[frEmptyDescription], frame-empty-description", host: { classAttribute: "frame-empty__description" }, ngImport: i0 });
@@ -75,6 +80,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
75
80
  },
76
81
  }]
77
82
  }] });
83
+ /** Content slot for empty. */
78
84
  class FrEmptyContent {
79
85
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrEmptyContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
80
86
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrEmptyContent, isStandalone: true, selector: "[frEmptyContent], frame-empty-content", host: { classAttribute: "frame-empty__content" }, ngImport: i0 });