@frame-ui-ng/components 0.4.0-beta.0 → 0.4.2-beta.0
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/calendar/src/styles/_vars.css +4 -0
- package/calendar/src/styles/calendar.css +29 -5
- package/confirm-popover/src/styles/confirm-popover.css +20 -0
- package/date-picker/src/styles/date-picker.css +27 -1
- 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 +24 -1
- 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 +167 -128
- 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-utils.mjs +5 -1
- package/fesm2022/frame-ui-ng-components-utils.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 +1449 -571
- package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
- package/package.json +10 -2
- package/popover/src/styles/popover.css +106 -101
- package/select/src/styles/select-content.css +27 -19
- 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 +2 -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 +27 -4
- 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-utils.d.ts +3 -1
- package/types/frame-ui-ng-components-virtual-scroll.d.ts +11 -2
- package/types/frame-ui-ng-components.d.ts +507 -80
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as i1 from '@angular/cdk/menu';
|
|
2
2
|
import { CdkMenu, CdkTargetMenuAim, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuGroup, CdkMenuItemRadio, CdkMenuTrigger, CdkContextMenuTrigger } from '@angular/cdk/menu';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, inject, TemplateRef, input, booleanAttribute, Directive,
|
|
4
|
+
import { InjectionToken, inject, TemplateRef, input, booleanAttribute, Directive, computed, DestroyRef, signal, ElementRef, output, NgModule } from '@angular/core';
|
|
5
5
|
import { buildConnectedPositions, FR_DROPDOWN_MENU_CONTENT, FrDropdownMenuTree, FR_DROPDOWN_MENU_PARENT, defaultPositions } from '@frame-ui-ng/components/dropdown-menu';
|
|
6
6
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
7
7
|
|
|
8
8
|
const FR_CONTEXT_MENU_CONTENT = new InjectionToken('FrContextMenuContent');
|
|
9
|
+
/** Content slot for context menu. */
|
|
9
10
|
class FrContextMenuContent {
|
|
10
11
|
templateRef = inject((TemplateRef));
|
|
11
12
|
align = input('start', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
@@ -54,6 +55,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
54
55
|
],
|
|
55
56
|
}]
|
|
56
57
|
}], 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 }] }] } });
|
|
58
|
+
/** Panel slot for context menu. */
|
|
57
59
|
class FrContextMenuPanel {
|
|
58
60
|
side = inject(FR_CONTEXT_MENU_CONTENT).side;
|
|
59
61
|
tree = inject(FrDropdownMenuTree);
|
|
@@ -82,6 +84,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
82
84
|
}]
|
|
83
85
|
}] });
|
|
84
86
|
|
|
87
|
+
/** Item slot for context menu. */
|
|
85
88
|
class FrContextMenuItem {
|
|
86
89
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
87
90
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
@@ -100,16 +103,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
100
103
|
},
|
|
101
104
|
}]
|
|
102
105
|
}], propDecorators: { inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
106
|
+
/** Item slot for context menu checkbox. */
|
|
103
107
|
class FrContextMenuCheckboxItem {
|
|
104
108
|
checkboxItem = inject(CdkMenuItemCheckbox);
|
|
109
|
+
lastChecked = false;
|
|
105
110
|
checked = input(false, { ...(ngDevMode ? { debugName: "checked" } : /* istanbul ignore next */ {}), alias: 'checked',
|
|
106
111
|
transform: booleanAttribute });
|
|
107
112
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
108
113
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
114
|
+
ngDoCheck() {
|
|
115
|
+
const checked = this.checked();
|
|
116
|
+
if (checked === this.lastChecked) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
this.lastChecked = checked;
|
|
120
|
+
this.checkboxItem.checked = checked;
|
|
113
121
|
}
|
|
114
122
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuCheckboxItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
115
123
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrContextMenuCheckboxItem, isStandalone: true, selector: "button[frContextMenuCheckboxItem]", 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-context-menu__item frame-context-menu__checkbox-item frame-dropdown-menu__item frame-dropdown-menu__checkbox-item" }, hostDirectives: [{ directive: i1.CdkMenuItemCheckbox }], ngImport: i0 });
|
|
@@ -126,7 +134,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
126
134
|
'[attr.data-variant]': 'variant()',
|
|
127
135
|
},
|
|
128
136
|
}]
|
|
129
|
-
}],
|
|
137
|
+
}], 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 }] }] } });
|
|
138
|
+
/** Group slot for context menu radio. */
|
|
130
139
|
class FrContextMenuRadioGroup {
|
|
131
140
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuRadioGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
132
141
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrContextMenuRadioGroup, isStandalone: true, selector: "[frContextMenuRadioGroup]", host: { classAttribute: "frame-context-menu__radio-group frame-dropdown-menu__radio-group" }, hostDirectives: [{ directive: i1.CdkMenuGroup }], ngImport: i0 });
|
|
@@ -141,16 +150,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
141
150
|
},
|
|
142
151
|
}]
|
|
143
152
|
}] });
|
|
153
|
+
/** Item slot for context menu radio. */
|
|
144
154
|
class FrContextMenuRadioItem {
|
|
145
155
|
radioItem = inject(CdkMenuItemRadio);
|
|
156
|
+
lastChecked = false;
|
|
146
157
|
checked = input(false, { ...(ngDevMode ? { debugName: "checked" } : /* istanbul ignore next */ {}), alias: 'checked',
|
|
147
158
|
transform: booleanAttribute });
|
|
148
159
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
149
160
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
161
|
+
ngDoCheck() {
|
|
162
|
+
const checked = this.checked();
|
|
163
|
+
if (checked === this.lastChecked) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
this.lastChecked = checked;
|
|
167
|
+
this.radioItem.checked = checked;
|
|
154
168
|
}
|
|
155
169
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuRadioItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
156
170
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrContextMenuRadioItem, isStandalone: true, selector: "button[frContextMenuRadioItem]", 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-context-menu__item frame-context-menu__radio-item frame-dropdown-menu__item frame-dropdown-menu__radio-item" }, hostDirectives: [{ directive: i1.CdkMenuItemRadio }], ngImport: i0 });
|
|
@@ -167,7 +181,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
167
181
|
'[attr.data-variant]': 'variant()',
|
|
168
182
|
},
|
|
169
183
|
}]
|
|
170
|
-
}],
|
|
184
|
+
}], 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 }] }] } });
|
|
185
|
+
/** Label slot for context menu. */
|
|
171
186
|
class FrContextMenuLabel {
|
|
172
187
|
inset = input(false, { ...(ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
173
188
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -183,6 +198,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
183
198
|
},
|
|
184
199
|
}]
|
|
185
200
|
}], propDecorators: { inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }] } });
|
|
201
|
+
/** Separator slot for context menu. */
|
|
186
202
|
class FrContextMenuSeparator {
|
|
187
203
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
188
204
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrContextMenuSeparator, isStandalone: true, selector: "[frContextMenuSeparator]", host: { attributes: { "role": "separator" }, classAttribute: "frame-context-menu__separator frame-dropdown-menu__separator" }, ngImport: i0 });
|
|
@@ -197,6 +213,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
197
213
|
},
|
|
198
214
|
}]
|
|
199
215
|
}] });
|
|
216
|
+
/** Shortcut slot for context menu. */
|
|
200
217
|
class FrContextMenuShortcut {
|
|
201
218
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuShortcut, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
202
219
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrContextMenuShortcut, isStandalone: true, selector: "[frContextMenuShortcut]", host: { classAttribute: "frame-context-menu__shortcut frame-dropdown-menu__shortcut" }, ngImport: i0 });
|
|
@@ -210,6 +227,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
210
227
|
},
|
|
211
228
|
}]
|
|
212
229
|
}] });
|
|
230
|
+
/** Indicator slot for context menu item. */
|
|
213
231
|
class FrContextMenuItemIndicator {
|
|
214
232
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuItemIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
215
233
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrContextMenuItemIndicator, isStandalone: true, selector: "[frContextMenuItemIndicator]", host: { attributes: { "aria-hidden": "true" }, classAttribute: "frame-context-menu__indicator frame-dropdown-menu__indicator" }, ngImport: i0 });
|
|
@@ -225,6 +243,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
225
243
|
}]
|
|
226
244
|
}] });
|
|
227
245
|
|
|
246
|
+
/** Root controller for context menu interactions. */
|
|
228
247
|
class FrContextMenu {
|
|
229
248
|
closeDelay = input(140, ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
|
|
230
249
|
triggerMode = input('both', ...(ngDevMode ? [{ debugName: "triggerMode" }] : /* istanbul ignore next */ []));
|
|
@@ -253,18 +272,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
253
272
|
},
|
|
254
273
|
}]
|
|
255
274
|
}], propDecorators: { closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], triggerMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
|
|
275
|
+
/** Nested submenu controller for context menu. */
|
|
256
276
|
class FrContextMenuSub {
|
|
257
277
|
parent = inject(FR_DROPDOWN_MENU_PARENT, { skipSelf: true });
|
|
258
278
|
closeDelayInput = input(null, { ...(ngDevMode ? { debugName: "closeDelayInput" } : /* istanbul ignore next */ {}), alias: 'closeDelay' });
|
|
259
279
|
triggerModeInput = input(null, { ...(ngDevMode ? { debugName: "triggerModeInput" } : /* istanbul ignore next */ {}), alias: 'triggerMode' });
|
|
260
|
-
closeDelay =
|
|
261
|
-
triggerMode =
|
|
262
|
-
constructor() {
|
|
263
|
-
effect(() => {
|
|
264
|
-
this.closeDelay.set(this.closeDelayInput() ?? this.parent.closeDelay());
|
|
265
|
-
this.triggerMode.set(this.triggerModeInput() ?? this.parent.triggerMode());
|
|
266
|
-
});
|
|
267
|
-
}
|
|
280
|
+
closeDelay = computed(() => this.closeDelayInput() ?? this.parent.closeDelay(), ...(ngDevMode ? [{ debugName: "closeDelay" }] : /* istanbul ignore next */ []));
|
|
281
|
+
triggerMode = computed(() => this.triggerModeInput() ?? this.parent.triggerMode(), ...(ngDevMode ? [{ debugName: "triggerMode" }] : /* istanbul ignore next */ []));
|
|
268
282
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrContextMenuSub, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
269
283
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: FrContextMenuSub, isStandalone: true, selector: "[frContextMenuSub]", 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-context-menu-sub frame-dropdown-menu-sub" }, providers: [
|
|
270
284
|
{
|
|
@@ -287,8 +301,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
287
301
|
class: 'frame-context-menu-sub frame-dropdown-menu-sub',
|
|
288
302
|
},
|
|
289
303
|
}]
|
|
290
|
-
}],
|
|
304
|
+
}], propDecorators: { closeDelayInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], triggerModeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }] } });
|
|
291
305
|
|
|
306
|
+
/** Trigger control for context menu sub. */
|
|
292
307
|
class FrContextMenuSubTrigger {
|
|
293
308
|
cdkMenuTrigger = inject(CdkMenuTrigger);
|
|
294
309
|
destroyRef = inject(DestroyRef);
|
|
@@ -301,18 +316,7 @@ class FrContextMenuSubTrigger {
|
|
|
301
316
|
isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
302
317
|
constructor() {
|
|
303
318
|
this.tree.register(this);
|
|
304
|
-
|
|
305
|
-
const content = this.menuContent();
|
|
306
|
-
this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;
|
|
307
|
-
this.cdkMenuTrigger.menuPosition = this.resolvePositions();
|
|
308
|
-
if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {
|
|
309
|
-
queueMicrotask(() => {
|
|
310
|
-
if (!this.cdkMenuTrigger.isOpen()) {
|
|
311
|
-
this.cdkMenuTrigger.open();
|
|
312
|
-
}
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
});
|
|
319
|
+
queueMicrotask(() => this.syncCdkTrigger());
|
|
316
320
|
this.cdkMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
317
321
|
this.tree.cancelClose();
|
|
318
322
|
this.isOpen.set(true);
|
|
@@ -329,6 +333,21 @@ class FrContextMenuSubTrigger {
|
|
|
329
333
|
this.isOpen.set(false);
|
|
330
334
|
});
|
|
331
335
|
}
|
|
336
|
+
ngDoCheck() {
|
|
337
|
+
this.syncCdkTrigger();
|
|
338
|
+
}
|
|
339
|
+
syncCdkTrigger() {
|
|
340
|
+
const content = this.menuContent();
|
|
341
|
+
this.cdkMenuTrigger.menuTemplateRef = content?.templateRef ?? null;
|
|
342
|
+
this.cdkMenuTrigger.menuPosition = this.resolvePositions();
|
|
343
|
+
if (content?.isDebugVisible() && !this.cdkMenuTrigger.isOpen()) {
|
|
344
|
+
queueMicrotask(() => {
|
|
345
|
+
if (!this.cdkMenuTrigger.isOpen()) {
|
|
346
|
+
this.cdkMenuTrigger.open();
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
}
|
|
332
351
|
close() {
|
|
333
352
|
if (this.menuContent()?.isDebugVisible()) {
|
|
334
353
|
return;
|
|
@@ -382,6 +401,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
|
|
|
382
401
|
}]
|
|
383
402
|
}], ctorParameters: () => [], propDecorators: { menuContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "frContextMenuSubTrigger", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], triggerModeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerMode", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
384
403
|
|
|
404
|
+
/** Trigger control for context menu. */
|
|
385
405
|
class FrContextMenuTrigger {
|
|
386
406
|
static CUSTOM_PROPERTY_PREFIX = '--frame-dropdown-menu-';
|
|
387
407
|
cdkContextMenuTrigger = inject(CdkContextMenuTrigger);
|
|
@@ -395,19 +415,7 @@ class FrContextMenuTrigger {
|
|
|
395
415
|
closed = output();
|
|
396
416
|
isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
397
417
|
constructor() {
|
|
398
|
-
|
|
399
|
-
const content = this.menuContent();
|
|
400
|
-
this.cdkContextMenuTrigger.menuTemplateRef = content?.templateRef ?? null;
|
|
401
|
-
this.cdkContextMenuTrigger.menuPosition = this.resolvePositions();
|
|
402
|
-
this.cdkContextMenuTrigger.disabled = this.disabled();
|
|
403
|
-
if (content?.isDebugVisible() && !this.cdkContextMenuTrigger.isOpen()) {
|
|
404
|
-
queueMicrotask(() => {
|
|
405
|
-
if (!this.cdkContextMenuTrigger.isOpen()) {
|
|
406
|
-
this.openAtCenter();
|
|
407
|
-
}
|
|
408
|
-
});
|
|
409
|
-
}
|
|
410
|
-
});
|
|
418
|
+
queueMicrotask(() => this.syncCdkTrigger());
|
|
411
419
|
this.cdkContextMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
412
420
|
this.isOpen.set(true);
|
|
413
421
|
this.opened.emit();
|
|
@@ -428,6 +436,22 @@ class FrContextMenuTrigger {
|
|
|
428
436
|
this.closed.emit();
|
|
429
437
|
});
|
|
430
438
|
}
|
|
439
|
+
ngDoCheck() {
|
|
440
|
+
this.syncCdkTrigger();
|
|
441
|
+
}
|
|
442
|
+
syncCdkTrigger() {
|
|
443
|
+
const content = this.menuContent();
|
|
444
|
+
this.cdkContextMenuTrigger.menuTemplateRef = content?.templateRef ?? null;
|
|
445
|
+
this.cdkContextMenuTrigger.menuPosition = this.resolvePositions();
|
|
446
|
+
this.cdkContextMenuTrigger.disabled = this.disabled();
|
|
447
|
+
if (content?.isDebugVisible() && !this.cdkContextMenuTrigger.isOpen()) {
|
|
448
|
+
queueMicrotask(() => {
|
|
449
|
+
if (!this.cdkContextMenuTrigger.isOpen()) {
|
|
450
|
+
this.openAtCenter();
|
|
451
|
+
}
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
}
|
|
431
455
|
openAt(coordinates) {
|
|
432
456
|
if (this.disabled() || !this.menuContent()) {
|
|
433
457
|
return;
|
|
@@ -442,6 +466,7 @@ class FrContextMenuTrigger {
|
|
|
442
466
|
return;
|
|
443
467
|
}
|
|
444
468
|
this.clearLongPress();
|
|
469
|
+
// Touch and pen users need a delayed open because they do not have a native contextmenu gesture.
|
|
445
470
|
this.longPressTimeoutId = setTimeout(() => {
|
|
446
471
|
event.preventDefault();
|
|
447
472
|
this.openAt({ x: event.clientX, y: event.clientY });
|
|
@@ -472,6 +497,7 @@ class FrContextMenuTrigger {
|
|
|
472
497
|
}
|
|
473
498
|
const menuPanel = overlayElement.querySelector('.frame-dropdown-menu__content') ?? overlayElement;
|
|
474
499
|
const sourceStyles = getComputedStyle(this.elementRef.nativeElement);
|
|
500
|
+
// CDK portals the menu, so trigger-scoped CSS variables must be mirrored manually.
|
|
475
501
|
for (let index = 0; index < sourceStyles.length; index += 1) {
|
|
476
502
|
const propertyName = sourceStyles.item(index);
|
|
477
503
|
if (!propertyName.startsWith(FrContextMenuTrigger.CUSTOM_PROPERTY_PREFIX)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame-ui-ng-components-context-menu.mjs","sources":["../../../projects/components/context-menu/src/context-menu.content.ts","../../../projects/components/context-menu/src/context-menu.items.ts","../../../projects/components/context-menu/src/context-menu.root.ts","../../../projects/components/context-menu/src/context-menu.sub-trigger.ts","../../../projects/components/context-menu/src/context-menu.trigger.ts","../../../projects/components/context-menu/context-menu.module.ts","../../../projects/components/context-menu/frame-ui-ng-components-context-menu.ts"],"sourcesContent":["import { CdkMenu, CdkTargetMenuAim } from '@angular/cdk/menu';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n Directive,\n InjectionToken,\n TemplateRef,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\n\nimport { buildConnectedPositions } from '@frame-ui-ng/components/dropdown-menu';\nimport {\n FR_DROPDOWN_MENU_CONTENT,\n FrDropdownMenuContent,\n} from '@frame-ui-ng/components/dropdown-menu';\nimport {\n FR_DROPDOWN_MENU_PARENT,\n FrDropdownMenuTree,\n} from '@frame-ui-ng/components/dropdown-menu';\nimport {\n FrDropdownMenuAlignment,\n FrDropdownMenuSide,\n} from '@frame-ui-ng/components/dropdown-menu';\n\nexport const FR_CONTEXT_MENU_CONTENT = new InjectionToken<FrContextMenuContent>(\n 'FrContextMenuContent',\n);\n\n@Directive({\n selector: 'ng-template[frContextMenuContent], ng-template[frContextMenuSubContent]',\n exportAs: 'frContextMenuContent',\n providers: [\n {\n provide: FR_CONTEXT_MENU_CONTENT,\n useExisting: FrContextMenuContent,\n },\n {\n provide: FR_DROPDOWN_MENU_CONTENT,\n useExisting: FrContextMenuContent,\n },\n ],\n})\nexport class FrContextMenuContent implements Partial<FrDropdownMenuContent> {\n readonly templateRef = inject(TemplateRef<unknown>);\n\n readonly align = input<FrDropdownMenuAlignment>('start');\n readonly alignOffset = input(0);\n readonly debugVisible = input(false, { transform: booleanAttribute });\n readonly side = input<FrDropdownMenuSide>('right');\n readonly sideOffset = input(4);\n\n isDebugVisible(): boolean {\n return this.debugVisible();\n }\n\n getPositions(isSubmenu: boolean): ConnectedPosition[] {\n return buildConnectedPositions({\n align: this.align(),\n alignOffset: this.alignOffset(),\n isSubmenu,\n side: this.side(),\n sideOffset: this.sideOffset(),\n });\n }\n}\n\n@Directive({\n selector: '[frContextMenuPanel]',\n hostDirectives: [CdkMenu, CdkTargetMenuAim],\n host: {\n class: 'frame-context-menu__content frame-dropdown-menu__content',\n '[attr.data-side]': 'side()',\n tabindex: '-1',\n '(mouseenter)': 'handleMouseEnter()',\n '(mouseleave)': 'handleMouseLeave()',\n },\n})\nexport class FrContextMenuPanel {\n protected readonly side = inject(FR_CONTEXT_MENU_CONTENT).side;\n private readonly tree = inject(FrDropdownMenuTree);\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\n\n protected handleMouseEnter(): void {\n this.tree.enterInteractiveArea();\n }\n\n protected handleMouseLeave(): void {\n this.tree.leaveInteractiveArea(this.parent.closeDelay());\n }\n}\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 '@frame-ui-ng/components/dropdown-menu';\n\n@Directive({\n selector: '[frContextMenuItem]',\n hostDirectives: [CdkMenuItem],\n host: {\n class: 'frame-context-menu__item frame-dropdown-menu__item',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class FrContextMenuItem {\n readonly inset = input(false, { transform: booleanAttribute });\n readonly variant = input<FrDropdownMenuItemVariant>('default');\n}\n\n@Directive({\n selector: 'button[frContextMenuCheckboxItem]',\n hostDirectives: [CdkMenuItemCheckbox],\n host: {\n class: 'frame-context-menu__item frame-context-menu__checkbox-item 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 FrContextMenuCheckboxItem {\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: '[frContextMenuRadioGroup]',\n hostDirectives: [CdkMenuGroup],\n host: {\n class: 'frame-context-menu__radio-group frame-dropdown-menu__radio-group',\n },\n})\nexport class FrContextMenuRadioGroup {}\n\n@Directive({\n selector: 'button[frContextMenuRadioItem]',\n hostDirectives: [CdkMenuItemRadio],\n host: {\n class: 'frame-context-menu__item frame-context-menu__radio-item 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 FrContextMenuRadioItem {\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: '[frContextMenuLabel]',\n host: {\n class: 'frame-context-menu__label frame-dropdown-menu__label',\n '[attr.data-inset]': 'inset() ? \"\" : null',\n },\n})\nexport class FrContextMenuLabel {\n readonly inset = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: '[frContextMenuSeparator]',\n host: {\n class: 'frame-context-menu__separator frame-dropdown-menu__separator',\n role: 'separator',\n },\n})\nexport class FrContextMenuSeparator {}\n\n@Directive({\n selector: '[frContextMenuShortcut]',\n host: {\n class: 'frame-context-menu__shortcut frame-dropdown-menu__shortcut',\n },\n})\nexport class FrContextMenuShortcut {}\n\n@Directive({\n selector: '[frContextMenuItemIndicator]',\n host: {\n class: 'frame-context-menu__indicator frame-dropdown-menu__indicator',\n 'aria-hidden': 'true',\n },\n})\nexport class FrContextMenuItemIndicator {}\n\r\n","import { Directive, effect, inject, input, signal } from '@angular/core';\n\nimport { FrDropdownMenuTriggerMode } from '@frame-ui-ng/components/dropdown-menu';\nimport {\n FR_DROPDOWN_MENU_PARENT,\n FrDropdownMenuParent,\n FrDropdownMenuTree,\n} from '@frame-ui-ng/components/dropdown-menu';\n\n@Directive({\n selector: '[frContextMenu]',\n providers: [\n FrDropdownMenuTree,\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useExisting: FrContextMenu,\n },\n ],\n host: {\n class: 'frame-context-menu-root',\n },\n})\nexport class FrContextMenu implements FrDropdownMenuParent {\n readonly closeDelay = input(140);\n readonly triggerMode = input<FrDropdownMenuTriggerMode>('both');\n}\n\n@Directive({\n selector: '[frContextMenuSub]',\n providers: [\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useExisting: FrContextMenuSub,\n },\n ],\n host: {\n class: 'frame-context-menu-sub frame-dropdown-menu-sub',\n },\n})\nexport class FrContextMenuSub 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\r\n","import { CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n DestroyRef,\n Directive,\n InputSignal,\n OnDestroy,\n booleanAttribute,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { FrContextMenuContent } from './context-menu.content';\nimport { defaultPositions } from '@frame-ui-ng/components/dropdown-menu';\nimport {\n FR_DROPDOWN_MENU_PARENT,\n FrDropdownMenuTree,\n} from '@frame-ui-ng/components/dropdown-menu';\nimport {\n FrDropdownMenuItemVariant,\n FrDropdownMenuTriggerMode,\n} from '@frame-ui-ng/components/dropdown-menu';\n\n@Directive({\n selector: '[frContextMenuSubTrigger]',\n hostDirectives: [CdkMenuItem, CdkMenuTrigger],\n host: {\n class: 'frame-context-menu__item frame-context-menu__sub-trigger 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 '(mouseenter)': 'handleMouseEnter()',\n '(mouseleave)': 'handleMouseLeave()',\n },\n})\nexport class FrContextMenuSubTrigger implements OnDestroy {\n private readonly cdkMenuTrigger = inject(CdkMenuTrigger);\n private readonly destroyRef = inject(DestroyRef);\n private readonly tree = inject(FrDropdownMenuTree);\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\n\n readonly menuContent: InputSignal<FrContextMenuContent | null> = input<FrContextMenuContent | null>(null, {\n alias: 'frContextMenuSubTrigger',\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 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 });\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 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 protected handleMouseEnter(): void {\n this.tree.enterInteractiveArea();\n\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 handleMouseLeave(): void {\n if (this.menuContent()?.isDebugVisible()) {\n return;\n }\n\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\n this.tree.leaveInteractiveArea(this.parent.closeDelay());\n }\n }\n\n private get triggerMode(): FrDropdownMenuTriggerMode {\n return this.triggerModeInput() ?? this.parent.triggerMode();\n }\n\n private resolvePositions(): ConnectedPosition[] {\n return this.menuContent()?.getPositions(true) ?? defaultPositions(true);\n }\n}\n\r\n","import { CdkContextMenuTrigger } from '@angular/cdk/menu';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n booleanAttribute,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { FrContextMenuContent } from './context-menu.content';\nimport { defaultPositions } from '@frame-ui-ng/components/dropdown-menu';\n\ntype ContextMenuCoordinates = {\n readonly x: number;\n readonly y: number;\n};\n\n@Directive({\n selector: '[frContextMenuTrigger]',\n hostDirectives: [CdkContextMenuTrigger],\n host: {\n class: 'frame-context-menu__trigger',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '(pointerdown)': 'handlePointerDown($event)',\n '(pointerup)': 'clearLongPress()',\n '(pointercancel)': 'clearLongPress()',\n '(pointerleave)': 'clearLongPress()',\n },\n})\nexport class FrContextMenuTrigger {\n private static readonly CUSTOM_PROPERTY_PREFIX = '--frame-dropdown-menu-';\n\n private readonly cdkContextMenuTrigger = inject(CdkContextMenuTrigger);\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private longPressTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\n readonly menuContent = input<FrContextMenuContent | null>(null, {\n alias: 'frContextMenuTrigger',\n });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly longPressDelay = input(520);\n readonly opened = output<void>();\n readonly closed = output<void>();\n readonly isOpen = signal(false);\n\n constructor() {\n effect(() => {\n const content = this.menuContent();\n\n this.cdkContextMenuTrigger.menuTemplateRef = content?.templateRef ?? null;\n this.cdkContextMenuTrigger.menuPosition = this.resolvePositions();\n this.cdkContextMenuTrigger.disabled = this.disabled();\n\n if (content?.isDebugVisible() && !this.cdkContextMenuTrigger.isOpen()) {\n queueMicrotask(() => {\n if (!this.cdkContextMenuTrigger.isOpen()) {\n this.openAtCenter();\n }\n });\n }\n });\n\n this.cdkContextMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.isOpen.set(true);\n this.opened.emit();\n queueMicrotask(() => {\n this.syncCustomPropertiesToOverlay();\n });\n });\n\n this.cdkContextMenuTrigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (this.menuContent()?.isDebugVisible()) {\n queueMicrotask(() => {\n if (!this.cdkContextMenuTrigger.isOpen()) {\n this.openAtCenter();\n }\n });\n return;\n }\n\n this.isOpen.set(false);\n this.closed.emit();\n });\n }\n\n openAt(coordinates: ContextMenuCoordinates): void {\n if (this.disabled() || !this.menuContent()) {\n return;\n }\n\n this.cdkContextMenuTrigger.open(coordinates);\n }\n\n close(): void {\n this.cdkContextMenuTrigger.close();\n }\n\n protected handlePointerDown(event: PointerEvent): void {\n if (this.disabled() || (event.pointerType !== 'touch' && event.pointerType !== 'pen')) {\n return;\n }\n\n this.clearLongPress();\n this.longPressTimeoutId = setTimeout(() => {\n event.preventDefault();\n this.openAt({ x: event.clientX, y: event.clientY });\n }, this.longPressDelay());\n }\n\n protected clearLongPress(): void {\n if (this.longPressTimeoutId === null) {\n return;\n }\n\n clearTimeout(this.longPressTimeoutId);\n this.longPressTimeoutId = null;\n }\n\n private resolvePositions(): ConnectedPosition[] {\n return this.menuContent()?.getPositions(false) ?? defaultPositions(false);\n }\n\n private openAtCenter(): void {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n\n this.openAt({\n x: rect.left + rect.width / 2,\n y: rect.top + rect.height / 2,\n });\n }\n\n private syncCustomPropertiesToOverlay(): void {\n const overlayRef = (this.cdkContextMenuTrigger as unknown as {\n 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(FrContextMenuTrigger.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\r\n","import { NgModule } from '@angular/core';\nimport {\n FrContextMenu,\n FrContextMenuCheckboxItem,\n FrContextMenuContent,\n FrContextMenuItem,\n FrContextMenuItemIndicator,\n FrContextMenuLabel,\n FrContextMenuPanel,\n FrContextMenuRadioGroup,\n FrContextMenuRadioItem,\n FrContextMenuSeparator,\n FrContextMenuShortcut,\n FrContextMenuSub,\n FrContextMenuSubTrigger,\n FrContextMenuTrigger,\n} from './src/context-menu';\n\n@NgModule({\n imports: [\n FrContextMenu,\n FrContextMenuCheckboxItem,\n FrContextMenuContent,\n FrContextMenuItem,\n FrContextMenuItemIndicator,\n FrContextMenuLabel,\n FrContextMenuPanel,\n FrContextMenuRadioGroup,\n FrContextMenuRadioItem,\n FrContextMenuSeparator,\n FrContextMenuShortcut,\n FrContextMenuSub,\n FrContextMenuSubTrigger,\n FrContextMenuTrigger,\n ],\n exports: [\n FrContextMenu,\n FrContextMenuCheckboxItem,\n FrContextMenuContent,\n FrContextMenuItem,\n FrContextMenuItemIndicator,\n FrContextMenuLabel,\n FrContextMenuPanel,\n FrContextMenuRadioGroup,\n FrContextMenuRadioItem,\n FrContextMenuSeparator,\n FrContextMenuShortcut,\n FrContextMenuSub,\n FrContextMenuSubTrigger,\n FrContextMenuTrigger,\n ],\n})\nexport class FrContextMenuModule {}\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-context-menu.mjs","sources":["../../../projects/components/context-menu/src/context-menu.content.ts","../../../projects/components/context-menu/src/context-menu.items.ts","../../../projects/components/context-menu/src/context-menu.root.ts","../../../projects/components/context-menu/src/context-menu.sub-trigger.ts","../../../projects/components/context-menu/src/context-menu.trigger.ts","../../../projects/components/context-menu/context-menu.module.ts","../../../projects/components/context-menu/frame-ui-ng-components-context-menu.ts"],"sourcesContent":["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 '@frame-ui-ng/components/dropdown-menu';\r\nimport {\r\n FR_DROPDOWN_MENU_CONTENT,\r\n FrDropdownMenuContent,\r\n} from '@frame-ui-ng/components/dropdown-menu';\r\nimport {\r\n FR_DROPDOWN_MENU_PARENT,\r\n FrDropdownMenuTree,\r\n} from '@frame-ui-ng/components/dropdown-menu';\r\nimport {\r\n FrDropdownMenuAlignment,\r\n FrDropdownMenuSide,\r\n} from '@frame-ui-ng/components/dropdown-menu';\r\n\r\nexport const FR_CONTEXT_MENU_CONTENT = new InjectionToken<FrContextMenuContent>(\r\n 'FrContextMenuContent',\r\n);\r\n\r\n/** Content slot for context menu. */\r\n@Directive({\r\n selector: 'ng-template[frContextMenuContent], ng-template[frContextMenuSubContent]',\r\n exportAs: 'frContextMenuContent',\r\n providers: [\r\n {\r\n provide: FR_CONTEXT_MENU_CONTENT,\r\n useExisting: FrContextMenuContent,\r\n },\r\n {\r\n provide: FR_DROPDOWN_MENU_CONTENT,\r\n useExisting: FrContextMenuContent,\r\n },\r\n ],\r\n})\r\nexport class FrContextMenuContent implements Partial<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>('right');\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 context menu. */\r\n@Directive({\r\n selector: '[frContextMenuPanel]',\r\n hostDirectives: [CdkMenu, CdkTargetMenuAim],\r\n host: {\r\n class: 'frame-context-menu__content 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 FrContextMenuPanel {\r\n protected readonly side = inject(FR_CONTEXT_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\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 '@frame-ui-ng/components/dropdown-menu';\r\n\r\n/** Item slot for context menu. */\r\n@Directive({\r\n selector: '[frContextMenuItem]',\r\n hostDirectives: [CdkMenuItem],\r\n host: {\r\n class: 'frame-context-menu__item frame-dropdown-menu__item',\r\n '[attr.data-inset]': 'inset() ? \"\" : null',\r\n '[attr.data-variant]': 'variant()',\r\n },\r\n})\r\nexport class FrContextMenuItem {\r\n readonly inset = input(false, { transform: booleanAttribute });\r\n readonly variant = input<FrDropdownMenuItemVariant>('default');\r\n}\r\n\r\n/** Item slot for context menu checkbox. */\r\n@Directive({\r\n selector: 'button[frContextMenuCheckboxItem]',\r\n hostDirectives: [CdkMenuItemCheckbox],\r\n host: {\r\n class: 'frame-context-menu__item frame-context-menu__checkbox-item 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 FrContextMenuCheckboxItem 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 context menu radio. */\r\n@Directive({\r\n selector: '[frContextMenuRadioGroup]',\r\n hostDirectives: [CdkMenuGroup],\r\n host: {\r\n class: 'frame-context-menu__radio-group frame-dropdown-menu__radio-group',\r\n },\r\n})\r\nexport class FrContextMenuRadioGroup {}\r\n\r\n/** Item slot for context menu radio. */\r\n@Directive({\r\n selector: 'button[frContextMenuRadioItem]',\r\n hostDirectives: [CdkMenuItemRadio],\r\n host: {\r\n class: 'frame-context-menu__item frame-context-menu__radio-item 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 FrContextMenuRadioItem 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 context menu. */\r\n@Directive({\r\n selector: '[frContextMenuLabel]',\r\n host: {\r\n class: 'frame-context-menu__label frame-dropdown-menu__label',\r\n '[attr.data-inset]': 'inset() ? \"\" : null',\r\n },\r\n})\r\nexport class FrContextMenuLabel {\r\n readonly inset = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n/** Separator slot for context menu. */\r\n@Directive({\r\n selector: '[frContextMenuSeparator]',\r\n host: {\r\n class: 'frame-context-menu__separator frame-dropdown-menu__separator',\r\n role: 'separator',\r\n },\r\n})\r\nexport class FrContextMenuSeparator {}\r\n\r\n/** Shortcut slot for context menu. */\r\n@Directive({\r\n selector: '[frContextMenuShortcut]',\r\n host: {\r\n class: 'frame-context-menu__shortcut frame-dropdown-menu__shortcut',\r\n },\r\n})\r\nexport class FrContextMenuShortcut {}\r\n\r\n/** Indicator slot for context menu item. */\r\n@Directive({\r\n selector: '[frContextMenuItemIndicator]',\r\n host: {\r\n class: 'frame-context-menu__indicator frame-dropdown-menu__indicator',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrContextMenuItemIndicator {}\r\n\r\n","import { Directive, computed, inject, input } from '@angular/core';\r\n\r\nimport { FrDropdownMenuTriggerMode } from '@frame-ui-ng/components/dropdown-menu';\r\nimport {\r\n FR_DROPDOWN_MENU_PARENT,\r\n FrDropdownMenuParent,\r\n FrDropdownMenuTree,\r\n} from '@frame-ui-ng/components/dropdown-menu';\r\n\r\n/** Root controller for context menu interactions. */\r\n@Directive({\r\n selector: '[frContextMenu]',\r\n providers: [\r\n FrDropdownMenuTree,\r\n {\r\n provide: FR_DROPDOWN_MENU_PARENT,\r\n useExisting: FrContextMenu,\r\n },\r\n ],\r\n host: {\r\n class: 'frame-context-menu-root',\r\n },\r\n})\r\nexport class FrContextMenu implements FrDropdownMenuParent {\r\n readonly closeDelay = input(140);\r\n readonly triggerMode = input<FrDropdownMenuTriggerMode>('both');\r\n}\r\n\r\n/** Nested submenu controller for context menu. */\r\n@Directive({\r\n selector: '[frContextMenuSub]',\r\n providers: [\r\n {\r\n provide: FR_DROPDOWN_MENU_PARENT,\r\n useExisting: FrContextMenuSub,\r\n },\r\n ],\r\n host: {\r\n class: 'frame-context-menu-sub frame-dropdown-menu-sub',\r\n },\r\n})\r\nexport class FrContextMenuSub 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\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 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 { FrContextMenuContent } from './context-menu.content';\r\nimport { defaultPositions } from '@frame-ui-ng/components/dropdown-menu';\r\nimport {\r\n FR_DROPDOWN_MENU_PARENT,\r\n FrDropdownMenuTree,\r\n} from '@frame-ui-ng/components/dropdown-menu';\r\nimport {\r\n FrDropdownMenuItemVariant,\r\n FrDropdownMenuTriggerMode,\r\n} from '@frame-ui-ng/components/dropdown-menu';\r\n\r\n/** Trigger control for context menu sub. */\r\n@Directive({\r\n selector: '[frContextMenuSubTrigger]',\r\n hostDirectives: [CdkMenuItem, CdkMenuTrigger],\r\n host: {\r\n class: 'frame-context-menu__item frame-context-menu__sub-trigger 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 '(mouseenter)': 'handleMouseEnter()',\r\n '(mouseleave)': 'handleMouseLeave()',\r\n },\r\n})\r\nexport class FrContextMenuSubTrigger implements DoCheck, OnDestroy {\r\n private readonly cdkMenuTrigger = inject(CdkMenuTrigger);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly tree = inject(FrDropdownMenuTree);\r\n private readonly parent = inject(FR_DROPDOWN_MENU_PARENT);\r\n\r\n readonly menuContent: InputSignal<FrContextMenuContent | null> = input<FrContextMenuContent | null>(null, {\r\n alias: 'frContextMenuSubTrigger',\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 readonly isOpen = signal(false);\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 });\r\n\r\n this.cdkMenuTrigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n if (this.menuContent()?.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 ngDoCheck(): void {\r\n this.syncCdkTrigger();\r\n }\r\n\r\n private syncCdkTrigger(): void {\r\n const content = this.menuContent();\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 close(): void {\r\n if (this.menuContent()?.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 ngOnDestroy(): void {\r\n this.tree.unregister(this);\r\n }\r\n\r\n protected handleMouseEnter(): void {\r\n this.tree.enterInteractiveArea();\r\n\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 handleMouseLeave(): void {\r\n if (this.menuContent()?.isDebugVisible()) {\r\n return;\r\n }\r\n\r\n if (this.triggerMode === 'hover' || this.triggerMode === 'both') {\r\n this.tree.leaveInteractiveArea(this.parent.closeDelay());\r\n }\r\n }\r\n\r\n private get triggerMode(): FrDropdownMenuTriggerMode {\r\n return this.triggerModeInput() ?? this.parent.triggerMode();\r\n }\r\n\r\n private resolvePositions(): ConnectedPosition[] {\r\n return this.menuContent()?.getPositions(true) ?? defaultPositions(true);\r\n }\r\n}\r\n\r\n","import { CdkContextMenuTrigger } 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 booleanAttribute,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { FrContextMenuContent } from './context-menu.content';\r\nimport { defaultPositions } from '@frame-ui-ng/components/dropdown-menu';\r\n\r\ntype ContextMenuCoordinates = {\r\n readonly x: number;\r\n readonly y: number;\r\n};\r\n\r\n/** Trigger control for context menu. */\r\n@Directive({\r\n selector: '[frContextMenuTrigger]',\r\n hostDirectives: [CdkContextMenuTrigger],\r\n host: {\r\n class: 'frame-context-menu__trigger',\r\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '(pointerdown)': 'handlePointerDown($event)',\r\n '(pointerup)': 'clearLongPress()',\r\n '(pointercancel)': 'clearLongPress()',\r\n '(pointerleave)': 'clearLongPress()',\r\n },\r\n})\r\nexport class FrContextMenuTrigger implements DoCheck {\r\n private static readonly CUSTOM_PROPERTY_PREFIX = '--frame-dropdown-menu-';\r\n\r\n private readonly cdkContextMenuTrigger = inject(CdkContextMenuTrigger);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private longPressTimeoutId: ReturnType<typeof setTimeout> | null = null;\r\n\r\n readonly menuContent = input<FrContextMenuContent | null>(null, {\r\n alias: 'frContextMenuTrigger',\r\n });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly longPressDelay = input(520);\r\n readonly opened = output<void>();\r\n readonly closed = output<void>();\r\n readonly isOpen = signal(false);\r\n\r\n constructor() {\r\n queueMicrotask(() => this.syncCdkTrigger());\r\n\r\n this.cdkContextMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n this.isOpen.set(true);\r\n this.opened.emit();\r\n queueMicrotask(() => {\r\n this.syncCustomPropertiesToOverlay();\r\n });\r\n });\r\n\r\n this.cdkContextMenuTrigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n if (this.menuContent()?.isDebugVisible()) {\r\n queueMicrotask(() => {\r\n if (!this.cdkContextMenuTrigger.isOpen()) {\r\n this.openAtCenter();\r\n }\r\n });\r\n return;\r\n }\r\n\r\n this.isOpen.set(false);\r\n this.closed.emit();\r\n });\r\n }\r\n\r\n ngDoCheck(): void {\r\n this.syncCdkTrigger();\r\n }\r\n\r\n private syncCdkTrigger(): void {\r\n const content = this.menuContent();\r\n\r\n this.cdkContextMenuTrigger.menuTemplateRef = content?.templateRef ?? null;\r\n this.cdkContextMenuTrigger.menuPosition = this.resolvePositions();\r\n this.cdkContextMenuTrigger.disabled = this.disabled();\r\n\r\n if (content?.isDebugVisible() && !this.cdkContextMenuTrigger.isOpen()) {\r\n queueMicrotask(() => {\r\n if (!this.cdkContextMenuTrigger.isOpen()) {\r\n this.openAtCenter();\r\n }\r\n });\r\n }\r\n }\r\n\r\n openAt(coordinates: ContextMenuCoordinates): void {\r\n if (this.disabled() || !this.menuContent()) {\r\n return;\r\n }\r\n\r\n this.cdkContextMenuTrigger.open(coordinates);\r\n }\r\n\r\n close(): void {\r\n this.cdkContextMenuTrigger.close();\r\n }\r\n\r\n protected handlePointerDown(event: PointerEvent): void {\r\n if (this.disabled() || (event.pointerType !== 'touch' && event.pointerType !== 'pen')) {\r\n return;\r\n }\r\n\r\n this.clearLongPress();\r\n // Touch and pen users need a delayed open because they do not have a native contextmenu gesture.\r\n this.longPressTimeoutId = setTimeout(() => {\r\n event.preventDefault();\r\n this.openAt({ x: event.clientX, y: event.clientY });\r\n }, this.longPressDelay());\r\n }\r\n\r\n protected clearLongPress(): void {\r\n if (this.longPressTimeoutId === null) {\r\n return;\r\n }\r\n\r\n clearTimeout(this.longPressTimeoutId);\r\n this.longPressTimeoutId = null;\r\n }\r\n\r\n private resolvePositions(): ConnectedPosition[] {\r\n return this.menuContent()?.getPositions(false) ?? defaultPositions(false);\r\n }\r\n\r\n private openAtCenter(): void {\r\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\r\n\r\n this.openAt({\r\n x: rect.left + rect.width / 2,\r\n y: rect.top + rect.height / 2,\r\n });\r\n }\r\n\r\n private syncCustomPropertiesToOverlay(): void {\r\n const overlayRef = (this.cdkContextMenuTrigger as unknown as {\r\n 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(FrContextMenuTrigger.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","import { NgModule } from '@angular/core';\nimport {\n FrContextMenu,\n FrContextMenuCheckboxItem,\n FrContextMenuContent,\n FrContextMenuItem,\n FrContextMenuItemIndicator,\n FrContextMenuLabel,\n FrContextMenuPanel,\n FrContextMenuRadioGroup,\n FrContextMenuRadioItem,\n FrContextMenuSeparator,\n FrContextMenuShortcut,\n FrContextMenuSub,\n FrContextMenuSubTrigger,\n FrContextMenuTrigger,\n} from './src/context-menu';\n\n@NgModule({\n imports: [\n FrContextMenu,\n FrContextMenuCheckboxItem,\n FrContextMenuContent,\n FrContextMenuItem,\n FrContextMenuItemIndicator,\n FrContextMenuLabel,\n FrContextMenuPanel,\n FrContextMenuRadioGroup,\n FrContextMenuRadioItem,\n FrContextMenuSeparator,\n FrContextMenuShortcut,\n FrContextMenuSub,\n FrContextMenuSubTrigger,\n FrContextMenuTrigger,\n ],\n exports: [\n FrContextMenu,\n FrContextMenuCheckboxItem,\n FrContextMenuContent,\n FrContextMenuItem,\n FrContextMenuItemIndicator,\n FrContextMenuLabel,\n FrContextMenuPanel,\n FrContextMenuRadioGroup,\n FrContextMenuRadioItem,\n FrContextMenuSeparator,\n FrContextMenuShortcut,\n FrContextMenuSub,\n FrContextMenuSubTrigger,\n FrContextMenuTrigger,\n ],\n})\nexport class FrContextMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ const POSITIONS = [
|
|
|
21
21
|
offsetY: -8,
|
|
22
22
|
},
|
|
23
23
|
];
|
|
24
|
+
/** Date picker control backed by the calendar primitive. */
|
|
24
25
|
class FrDatePicker extends FrControlValueAccessor {
|
|
25
26
|
mode = input('single', ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
26
27
|
captionLayout = input('label', ...(ngDevMode ? [{ debugName: "captionLayout" }] : /* istanbul ignore next */ []));
|
|
@@ -122,6 +123,7 @@ class FrDatePicker extends FrControlValueAccessor {
|
|
|
122
123
|
}
|
|
123
124
|
selectCalendarValue(value) {
|
|
124
125
|
const previous = this.singleDate();
|
|
126
|
+
// Preserve the existing time when a calendar click only changes the date portion.
|
|
125
127
|
const next = this.showTime() && value instanceof Date && previous ? mergeTime(value, previous) : value;
|
|
126
128
|
this.commitValue(normalizeValue(next, this.mode()));
|
|
127
129
|
if (this.closeOnSelect() && isCompleteValue(this.value(), this.mode())) {
|
|
@@ -433,6 +435,7 @@ function normalizeValue(value, mode) {
|
|
|
433
435
|
if (!value) {
|
|
434
436
|
return mode === 'range' ? { from: null, to: null } : null;
|
|
435
437
|
}
|
|
438
|
+
// Normalize across modes so form writes, presets, and calendar selections share one shape.
|
|
436
439
|
if (mode === 'range') {
|
|
437
440
|
if (isRange(value)) {
|
|
438
441
|
return {
|