@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.
- package/confirm-popover/src/styles/confirm-popover.css +20 -0
- package/drag-drop/src/styles/_vars.css +28 -0
- package/drag-drop/src/styles/drag-drop.css +132 -0
- package/fesm2022/frame-ui-ng-components-accordion.mjs +26 -21
- package/fesm2022/frame-ui-ng-components-accordion.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-alert.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-alert.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-avatar.mjs +7 -0
- package/fesm2022/frame-ui-ng-components-avatar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-badge.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-badge.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-breadcrumb.mjs +13 -6
- package/fesm2022/frame-ui-ng-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-button-group.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-button-group.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-button.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-button.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-calendar.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-card.mjs +15 -15
- package/fesm2022/frame-ui-ng-components-card.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-carousel.mjs +33 -16
- package/fesm2022/frame-ui-ng-components-carousel.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-checkbox.mjs +7 -9
- package/fesm2022/frame-ui-ng-components-checkbox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-collapsible.mjs +24 -23
- package/fesm2022/frame-ui-ng-components-collapsible.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-combobox.mjs +66 -18
- package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-command.mjs +47 -16
- package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +3 -0
- package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-confirm-popover.mjs +423 -0
- package/fesm2022/frame-ui-ng-components-confirm-popover.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-context-menu.mjs +71 -45
- package/fesm2022/frame-ui-ng-components-context-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-date-picker.mjs +3 -0
- package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-drag-drop.mjs +293 -0
- package/fesm2022/frame-ui-ng-components-drag-drop.mjs.map +1 -0
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +73 -36
- package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-empty.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-empty.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-field.mjs +21 -12
- package/fesm2022/frame-ui-ng-components-field.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-forms.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-forms.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-hover-card.mjs +49 -43
- package/fesm2022/frame-ui-ng-components-hover-card.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input-otp.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-input.mjs +13 -0
- package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-item.mjs +10 -0
- package/fesm2022/frame-ui-ng-components-item.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-menubar.mjs +15 -0
- package/fesm2022/frame-ui-ng-components-menubar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-modal.mjs +128 -114
- package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-navigation-menu.mjs +14 -0
- package/fesm2022/frame-ui-ng-components-navigation-menu.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-pagination.mjs +8 -0
- package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-popover.mjs +63 -51
- package/fesm2022/frame-ui-ng-components-popover.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-progress.mjs +2 -0
- package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-radio-group.mjs +5 -0
- package/fesm2022/frame-ui-ng-components-radio-group.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-resizable.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-select.mjs +62 -14
- package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-separator.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-separator.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sheet.mjs +99 -88
- package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-sidebar.mjs +27 -12
- package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-skeleton.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-skeleton.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-slider.mjs +29 -16
- package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-spinner.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-spinner.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-switch.mjs +6 -0
- package/fesm2022/frame-ui-ng-components-switch.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-table.mjs +76 -50
- package/fesm2022/frame-ui-ng-components-table.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tabs.mjs +4 -0
- package/fesm2022/frame-ui-ng-components-tabs.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-textarea.mjs +1 -0
- package/fesm2022/frame-ui-ng-components-textarea.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-toast.mjs +2 -0
- package/fesm2022/frame-ui-ng-components-toast.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-toggle.mjs +23 -16
- package/fesm2022/frame-ui-ng-components-toggle.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-tooltip.mjs +30 -25
- package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +26 -8
- package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
- package/fesm2022/frame-ui-ng-components.mjs +1387 -552
- package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
- package/package.json +10 -2
- package/popover/src/styles/popover.css +106 -101
- package/src/styles/components.css +6 -4
- package/styles/components.css +6 -4
- package/styles.css +6 -4
- package/types/frame-ui-ng-components-accordion.d.ts +11 -4
- package/types/frame-ui-ng-components-alert.d.ts +4 -0
- package/types/frame-ui-ng-components-avatar.d.ts +7 -0
- package/types/frame-ui-ng-components-badge.d.ts +4 -0
- package/types/frame-ui-ng-components-breadcrumb.d.ts +7 -0
- package/types/frame-ui-ng-components-button-group.d.ts +1 -0
- package/types/frame-ui-ng-components-button.d.ts +5 -0
- package/types/frame-ui-ng-components-calendar.d.ts +1 -0
- package/types/frame-ui-ng-components-card.d.ts +8 -3
- package/types/frame-ui-ng-components-carousel.d.ts +11 -2
- package/types/frame-ui-ng-components-checkbox.d.ts +3 -2
- package/types/frame-ui-ng-components-collapsible.d.ts +9 -4
- package/types/frame-ui-ng-components-combobox.d.ts +32 -3
- package/types/frame-ui-ng-components-command.d.ts +26 -4
- package/types/frame-ui-ng-components-confirm-modal.d.ts +2 -0
- package/types/frame-ui-ng-components-confirm-popover.d.ts +87 -0
- package/types/frame-ui-ng-components-context-menu.d.ts +29 -10
- package/types/frame-ui-ng-components-date-picker.d.ts +1 -0
- package/types/frame-ui-ng-components-drag-drop.d.ts +103 -0
- package/types/frame-ui-ng-components-dropdown-menu.d.ts +32 -9
- package/types/frame-ui-ng-components-empty.d.ts +6 -0
- package/types/frame-ui-ng-components-field.d.ts +9 -0
- package/types/frame-ui-ng-components-forms.d.ts +1 -0
- package/types/frame-ui-ng-components-hover-card.d.ts +8 -2
- package/types/frame-ui-ng-components-input-otp.d.ts +4 -0
- package/types/frame-ui-ng-components-input.d.ts +13 -0
- package/types/frame-ui-ng-components-item.d.ts +10 -0
- package/types/frame-ui-ng-components-menubar.d.ts +15 -0
- package/types/frame-ui-ng-components-modal.d.ts +12 -0
- package/types/frame-ui-ng-components-navigation-menu.d.ts +14 -0
- package/types/frame-ui-ng-components-pagination.d.ts +8 -0
- package/types/frame-ui-ng-components-popover.d.ts +14 -2
- package/types/frame-ui-ng-components-progress.d.ts +2 -0
- package/types/frame-ui-ng-components-radio-group.d.ts +5 -0
- package/types/frame-ui-ng-components-resizable.d.ts +3 -0
- package/types/frame-ui-ng-components-select.d.ts +23 -2
- package/types/frame-ui-ng-components-separator.d.ts +1 -0
- package/types/frame-ui-ng-components-sheet.d.ts +11 -0
- package/types/frame-ui-ng-components-sidebar.d.ts +21 -0
- package/types/frame-ui-ng-components-skeleton.d.ts +1 -0
- package/types/frame-ui-ng-components-slider.d.ts +5 -2
- package/types/frame-ui-ng-components-spinner.d.ts +1 -0
- package/types/frame-ui-ng-components-switch.d.ts +6 -0
- package/types/frame-ui-ng-components-table.d.ts +26 -0
- package/types/frame-ui-ng-components-tabs.d.ts +4 -0
- package/types/frame-ui-ng-components-textarea.d.ts +1 -0
- package/types/frame-ui-ng-components-toast.d.ts +2 -0
- package/types/frame-ui-ng-components-toggle.d.ts +8 -2
- package/types/frame-ui-ng-components-tooltip.d.ts +6 -2
- package/types/frame-ui-ng-components-virtual-scroll.d.ts +11 -2
- 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,
|
|
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 =
|
|
194
|
-
triggerMode =
|
|
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
|
-
}],
|
|
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
|
-
|
|
319
|
-
|
|
320
|
-
|
|
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
|
-
}],
|
|
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
|
-
|
|
360
|
-
|
|
361
|
-
|
|
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
|
-
}],
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 });
|