@raqm/ui 0.0.0-stage → 0.1.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/CHANGELOG.md +12 -0
- package/LICENSE +21 -0
- package/NOTICE.md +28 -0
- package/README.md +125 -3
- package/combobox/README.md +17 -0
- package/fesm2022/raqm-ui-accordion.mjs +414 -0
- package/fesm2022/raqm-ui-accordion.mjs.map +1 -0
- package/fesm2022/raqm-ui-alert-dialog.mjs +457 -0
- package/fesm2022/raqm-ui-alert-dialog.mjs.map +1 -0
- package/fesm2022/raqm-ui-alert.mjs +195 -0
- package/fesm2022/raqm-ui-alert.mjs.map +1 -0
- package/fesm2022/raqm-ui-aspect-ratio.mjs +66 -0
- package/fesm2022/raqm-ui-aspect-ratio.mjs.map +1 -0
- package/fesm2022/raqm-ui-attachment.mjs +435 -0
- package/fesm2022/raqm-ui-attachment.mjs.map +1 -0
- package/fesm2022/raqm-ui-avatar.mjs +337 -0
- package/fesm2022/raqm-ui-avatar.mjs.map +1 -0
- package/fesm2022/raqm-ui-badge.mjs +68 -0
- package/fesm2022/raqm-ui-badge.mjs.map +1 -0
- package/fesm2022/raqm-ui-breadcrumb.mjs +309 -0
- package/fesm2022/raqm-ui-breadcrumb.mjs.map +1 -0
- package/fesm2022/raqm-ui-button-group.mjs +138 -0
- package/fesm2022/raqm-ui-button-group.mjs.map +1 -0
- package/fesm2022/raqm-ui-button.mjs +295 -0
- package/fesm2022/raqm-ui-button.mjs.map +1 -0
- package/fesm2022/raqm-ui-calendar.mjs +1394 -0
- package/fesm2022/raqm-ui-calendar.mjs.map +1 -0
- package/fesm2022/raqm-ui-card.mjs +331 -0
- package/fesm2022/raqm-ui-card.mjs.map +1 -0
- package/fesm2022/raqm-ui-carousel.mjs +410 -0
- package/fesm2022/raqm-ui-carousel.mjs.map +1 -0
- package/fesm2022/raqm-ui-checkbox.mjs +86 -0
- package/fesm2022/raqm-ui-checkbox.mjs.map +1 -0
- package/fesm2022/raqm-ui-collapsible.mjs +266 -0
- package/fesm2022/raqm-ui-collapsible.mjs.map +1 -0
- package/fesm2022/raqm-ui-combobox.mjs +1584 -0
- package/fesm2022/raqm-ui-combobox.mjs.map +1 -0
- package/fesm2022/raqm-ui-command.mjs +1210 -0
- package/fesm2022/raqm-ui-command.mjs.map +1 -0
- package/fesm2022/raqm-ui-context-menu.mjs +723 -0
- package/fesm2022/raqm-ui-context-menu.mjs.map +1 -0
- package/fesm2022/raqm-ui-dialog.mjs +1214 -0
- package/fesm2022/raqm-ui-dialog.mjs.map +1 -0
- package/fesm2022/raqm-ui-drawer.mjs +687 -0
- package/fesm2022/raqm-ui-drawer.mjs.map +1 -0
- package/fesm2022/raqm-ui-dropdown-menu.mjs +1168 -0
- package/fesm2022/raqm-ui-dropdown-menu.mjs.map +1 -0
- package/fesm2022/raqm-ui-empty.mjs +272 -0
- package/fesm2022/raqm-ui-empty.mjs.map +1 -0
- package/fesm2022/raqm-ui-field.mjs +517 -0
- package/fesm2022/raqm-ui-field.mjs.map +1 -0
- package/fesm2022/raqm-ui-hover-card.mjs +828 -0
- package/fesm2022/raqm-ui-hover-card.mjs.map +1 -0
- package/fesm2022/raqm-ui-input-group.mjs +270 -0
- package/fesm2022/raqm-ui-input-group.mjs.map +1 -0
- package/fesm2022/raqm-ui-input-otp.mjs +788 -0
- package/fesm2022/raqm-ui-input-otp.mjs.map +1 -0
- package/fesm2022/raqm-ui-input.mjs +73 -0
- package/fesm2022/raqm-ui-input.mjs.map +1 -0
- package/fesm2022/raqm-ui-item.mjs +495 -0
- package/fesm2022/raqm-ui-item.mjs.map +1 -0
- package/fesm2022/raqm-ui-kbd.mjs +80 -0
- package/fesm2022/raqm-ui-kbd.mjs.map +1 -0
- package/fesm2022/raqm-ui-label.mjs +44 -0
- package/fesm2022/raqm-ui-label.mjs.map +1 -0
- package/fesm2022/raqm-ui-menubar.mjs +536 -0
- package/fesm2022/raqm-ui-menubar.mjs.map +1 -0
- package/fesm2022/raqm-ui-native-select.mjs +131 -0
- package/fesm2022/raqm-ui-native-select.mjs.map +1 -0
- package/fesm2022/raqm-ui-navigation-menu.mjs +1399 -0
- package/fesm2022/raqm-ui-navigation-menu.mjs.map +1 -0
- package/fesm2022/raqm-ui-overlay-internal.mjs +185 -0
- package/fesm2022/raqm-ui-overlay-internal.mjs.map +1 -0
- package/fesm2022/raqm-ui-pagination.mjs +440 -0
- package/fesm2022/raqm-ui-pagination.mjs.map +1 -0
- package/fesm2022/raqm-ui-popover.mjs +1495 -0
- package/fesm2022/raqm-ui-popover.mjs.map +1 -0
- package/fesm2022/raqm-ui-progress.mjs +369 -0
- package/fesm2022/raqm-ui-progress.mjs.map +1 -0
- package/fesm2022/raqm-ui-questionnaire.mjs +1005 -0
- package/fesm2022/raqm-ui-questionnaire.mjs.map +1 -0
- package/fesm2022/raqm-ui-radio-group.mjs +151 -0
- package/fesm2022/raqm-ui-radio-group.mjs.map +1 -0
- package/fesm2022/raqm-ui-resizable.mjs +439 -0
- package/fesm2022/raqm-ui-resizable.mjs.map +1 -0
- package/fesm2022/raqm-ui-scroll-area.mjs +510 -0
- package/fesm2022/raqm-ui-scroll-area.mjs.map +1 -0
- package/fesm2022/raqm-ui-select.mjs +1073 -0
- package/fesm2022/raqm-ui-select.mjs.map +1 -0
- package/fesm2022/raqm-ui-separator.mjs +103 -0
- package/fesm2022/raqm-ui-separator.mjs.map +1 -0
- package/fesm2022/raqm-ui-sheet.mjs +411 -0
- package/fesm2022/raqm-ui-sheet.mjs.map +1 -0
- package/fesm2022/raqm-ui-sidebar.mjs +1784 -0
- package/fesm2022/raqm-ui-sidebar.mjs.map +1 -0
- package/fesm2022/raqm-ui-skeleton.mjs +50 -0
- package/fesm2022/raqm-ui-skeleton.mjs.map +1 -0
- package/fesm2022/raqm-ui-slider.mjs +609 -0
- package/fesm2022/raqm-ui-slider.mjs.map +1 -0
- package/fesm2022/raqm-ui-spinner.mjs +137 -0
- package/fesm2022/raqm-ui-spinner.mjs.map +1 -0
- package/fesm2022/raqm-ui-switch.mjs +109 -0
- package/fesm2022/raqm-ui-switch.mjs.map +1 -0
- package/fesm2022/raqm-ui-table.mjs +271 -0
- package/fesm2022/raqm-ui-table.mjs.map +1 -0
- package/fesm2022/raqm-ui-tabs.mjs +536 -0
- package/fesm2022/raqm-ui-tabs.mjs.map +1 -0
- package/fesm2022/raqm-ui-textarea.mjs +37 -0
- package/fesm2022/raqm-ui-textarea.mjs.map +1 -0
- package/fesm2022/raqm-ui-toast.mjs +918 -0
- package/fesm2022/raqm-ui-toast.mjs.map +1 -0
- package/fesm2022/raqm-ui-toggle-group.mjs +462 -0
- package/fesm2022/raqm-ui-toggle-group.mjs.map +1 -0
- package/fesm2022/raqm-ui-toggle.mjs +158 -0
- package/fesm2022/raqm-ui-toggle.mjs.map +1 -0
- package/fesm2022/raqm-ui-tooltip.mjs +1226 -0
- package/fesm2022/raqm-ui-tooltip.mjs.map +1 -0
- package/fesm2022/raqm-ui.mjs +50 -0
- package/input-otp/README.md +12 -0
- package/package.json +275 -3
- package/styles/theme.css +4322 -0
- package/types/raqm-ui-accordion.d.ts +124 -0
- package/types/raqm-ui-alert-dialog.d.ts +81 -0
- package/types/raqm-ui-alert.d.ts +29 -0
- package/types/raqm-ui-aspect-ratio.d.ts +13 -0
- package/types/raqm-ui-attachment.d.ts +72 -0
- package/types/raqm-ui-avatar.d.ts +67 -0
- package/types/raqm-ui-badge.d.ts +20 -0
- package/types/raqm-ui-breadcrumb.d.ts +35 -0
- package/types/raqm-ui-button-group.d.ts +27 -0
- package/types/raqm-ui-button.d.ts +80 -0
- package/types/raqm-ui-calendar.d.ts +359 -0
- package/types/raqm-ui-card.d.ts +34 -0
- package/types/raqm-ui-carousel.d.ts +81 -0
- package/types/raqm-ui-checkbox.d.ts +24 -0
- package/types/raqm-ui-collapsible.d.ts +72 -0
- package/types/raqm-ui-combobox.d.ts +405 -0
- package/types/raqm-ui-command.d.ts +256 -0
- package/types/raqm-ui-context-menu.d.ts +196 -0
- package/types/raqm-ui-dialog.d.ts +232 -0
- package/types/raqm-ui-drawer.d.ts +121 -0
- package/types/raqm-ui-dropdown-menu.d.ts +319 -0
- package/types/raqm-ui-empty.d.ts +35 -0
- package/types/raqm-ui-field.d.ts +88 -0
- package/types/raqm-ui-hover-card.d.ts +139 -0
- package/types/raqm-ui-input-group.d.ts +45 -0
- package/types/raqm-ui-input-otp.d.ts +197 -0
- package/types/raqm-ui-input.d.ts +16 -0
- package/types/raqm-ui-item.d.ts +71 -0
- package/types/raqm-ui-kbd.d.ts +12 -0
- package/types/raqm-ui-label.d.ts +6 -0
- package/types/raqm-ui-menubar.d.ts +159 -0
- package/types/raqm-ui-native-select.d.ts +23 -0
- package/types/raqm-ui-navigation-menu.d.ts +230 -0
- package/types/raqm-ui-overlay-internal.d.ts +5 -0
- package/types/raqm-ui-pagination.d.ts +84 -0
- package/types/raqm-ui-popover.d.ts +235 -0
- package/types/raqm-ui-progress.d.ts +79 -0
- package/types/raqm-ui-questionnaire.d.ts +217 -0
- package/types/raqm-ui-radio-group.d.ts +48 -0
- package/types/raqm-ui-resizable.d.ts +98 -0
- package/types/raqm-ui-scroll-area.d.ts +132 -0
- package/types/raqm-ui-select.d.ts +205 -0
- package/types/raqm-ui-separator.d.ts +21 -0
- package/types/raqm-ui-sheet.d.ts +79 -0
- package/types/raqm-ui-sidebar.d.ts +285 -0
- package/types/raqm-ui-skeleton.d.ts +6 -0
- package/types/raqm-ui-slider.d.ts +129 -0
- package/types/raqm-ui-spinner.d.ts +32 -0
- package/types/raqm-ui-switch.d.ts +32 -0
- package/types/raqm-ui-table.d.ts +36 -0
- package/types/raqm-ui-tabs.d.ts +154 -0
- package/types/raqm-ui-textarea.d.ts +6 -0
- package/types/raqm-ui-toast.d.ts +190 -0
- package/types/raqm-ui-toggle-group.d.ts +167 -0
- package/types/raqm-ui-toggle.d.ts +42 -0
- package/types/raqm-ui-tooltip.d.ts +207 -0
- package/types/raqm-ui.d.ts +50 -0
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
import * as i1 from "@raqm/ui/dropdown-menu";
|
|
2
|
+
import { RaqmMenuCheckboxItemDirective, RaqmMenuDirection, RaqmMenuDirective, RaqmMenuGroupDirective, RaqmMenuItemDirective, RaqmMenuLabelDirective, RaqmMenuOverlaySync, RaqmMenuSeparatorDirective, RaqmMenuShortcutDirective, RaqmMenuTriggerBase } from "@raqm/ui/dropdown-menu";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import { DestroyRef, Directive, ElementRef, InjectionToken, booleanAttribute, effect, inject, input, isDevMode, model } from "@angular/core";
|
|
5
|
+
import * as i2 from "@angular/cdk/menu";
|
|
6
|
+
import { CdkMenuBar, CdkMenuGroup, CdkMenuItem, CdkMenuItemRadio } from "@angular/cdk/menu";
|
|
7
|
+
import { Directionality } from "@angular/cdk/bidi";
|
|
8
|
+
var RaqmMenubarDirective = class RaqmMenubarDirective {
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
10
|
+
minVersion: "12.0.0",
|
|
11
|
+
version: "22.2.2",
|
|
12
|
+
ngImport: i0,
|
|
13
|
+
type: RaqmMenubarDirective,
|
|
14
|
+
deps: [],
|
|
15
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
16
|
+
});
|
|
17
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
18
|
+
minVersion: "14.0.0",
|
|
19
|
+
version: "22.2.2",
|
|
20
|
+
type: RaqmMenubarDirective,
|
|
21
|
+
isStandalone: true,
|
|
22
|
+
selector: "[raqm-menubar]",
|
|
23
|
+
host: { classAttribute: "raqm-menubar" },
|
|
24
|
+
hostDirectives: [{ directive: i1.RaqmMenuDirection }, { directive: i2.CdkMenuBar }],
|
|
25
|
+
ngImport: i0
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
29
|
+
minVersion: "12.0.0",
|
|
30
|
+
version: "22.2.2",
|
|
31
|
+
ngImport: i0,
|
|
32
|
+
type: RaqmMenubarDirective,
|
|
33
|
+
decorators: [{
|
|
34
|
+
type: Directive,
|
|
35
|
+
args: [{
|
|
36
|
+
selector: "[raqm-menubar]",
|
|
37
|
+
hostDirectives: [RaqmMenuDirection, { directive: CdkMenuBar }],
|
|
38
|
+
host: { class: "raqm-menubar" }
|
|
39
|
+
}]
|
|
40
|
+
}]
|
|
41
|
+
});
|
|
42
|
+
var RaqmMenubarContentDirective = class RaqmMenubarContentDirective {
|
|
43
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
44
|
+
minVersion: "12.0.0",
|
|
45
|
+
version: "22.2.2",
|
|
46
|
+
ngImport: i0,
|
|
47
|
+
type: RaqmMenubarContentDirective,
|
|
48
|
+
deps: [],
|
|
49
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
50
|
+
});
|
|
51
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
52
|
+
minVersion: "14.0.0",
|
|
53
|
+
version: "22.2.2",
|
|
54
|
+
type: RaqmMenubarContentDirective,
|
|
55
|
+
isStandalone: true,
|
|
56
|
+
selector: "[raqm-menubar-content]",
|
|
57
|
+
host: { classAttribute: "raqm-menubar-content" },
|
|
58
|
+
hostDirectives: [{ directive: i1.RaqmMenuDirective }],
|
|
59
|
+
ngImport: i0
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
63
|
+
minVersion: "12.0.0",
|
|
64
|
+
version: "22.2.2",
|
|
65
|
+
ngImport: i0,
|
|
66
|
+
type: RaqmMenubarContentDirective,
|
|
67
|
+
decorators: [{
|
|
68
|
+
type: Directive,
|
|
69
|
+
args: [{
|
|
70
|
+
selector: "[raqm-menubar-content]",
|
|
71
|
+
hostDirectives: [{ directive: RaqmMenuDirective }],
|
|
72
|
+
host: { class: "raqm-menubar-content" }
|
|
73
|
+
}]
|
|
74
|
+
}]
|
|
75
|
+
});
|
|
76
|
+
var RaqmMenubarLabelDirective = class RaqmMenubarLabelDirective {
|
|
77
|
+
inset = input(false, {
|
|
78
|
+
...ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {},
|
|
79
|
+
transform: booleanAttribute
|
|
80
|
+
});
|
|
81
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
82
|
+
minVersion: "12.0.0",
|
|
83
|
+
version: "22.2.2",
|
|
84
|
+
ngImport: i0,
|
|
85
|
+
type: RaqmMenubarLabelDirective,
|
|
86
|
+
deps: [],
|
|
87
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
88
|
+
});
|
|
89
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
90
|
+
minVersion: "17.1.0",
|
|
91
|
+
version: "22.2.2",
|
|
92
|
+
type: RaqmMenubarLabelDirective,
|
|
93
|
+
isStandalone: true,
|
|
94
|
+
selector: "[raqm-menubar-label]",
|
|
95
|
+
inputs: { inset: {
|
|
96
|
+
classPropertyName: "inset",
|
|
97
|
+
publicName: "inset",
|
|
98
|
+
isSignal: true,
|
|
99
|
+
isRequired: false,
|
|
100
|
+
transformFunction: null
|
|
101
|
+
} },
|
|
102
|
+
host: {
|
|
103
|
+
properties: { "attr.data-raqm-inset": "inset() ? \"\" : null" },
|
|
104
|
+
classAttribute: "raqm-menubar-label"
|
|
105
|
+
},
|
|
106
|
+
ngImport: i0
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
110
|
+
minVersion: "12.0.0",
|
|
111
|
+
version: "22.2.2",
|
|
112
|
+
ngImport: i0,
|
|
113
|
+
type: RaqmMenubarLabelDirective,
|
|
114
|
+
decorators: [{
|
|
115
|
+
type: Directive,
|
|
116
|
+
args: [{
|
|
117
|
+
selector: "[raqm-menubar-label]",
|
|
118
|
+
host: {
|
|
119
|
+
class: "raqm-menubar-label",
|
|
120
|
+
"[attr.data-raqm-inset]": "inset() ? \"\" : null"
|
|
121
|
+
}
|
|
122
|
+
}]
|
|
123
|
+
}],
|
|
124
|
+
propDecorators: { inset: [{
|
|
125
|
+
type: i0.Input,
|
|
126
|
+
args: [{
|
|
127
|
+
isSignal: true,
|
|
128
|
+
alias: "inset",
|
|
129
|
+
required: false
|
|
130
|
+
}]
|
|
131
|
+
}] }
|
|
132
|
+
});
|
|
133
|
+
const MENUBAR_SIDE_OFFSET = 8;
|
|
134
|
+
const MENUBAR_ALIGN_OFFSET = 4;
|
|
135
|
+
var RaqmMenubarTriggerDirective = class RaqmMenubarTriggerDirective {
|
|
136
|
+
trigger = inject(RaqmMenuTriggerBase);
|
|
137
|
+
direction = inject(Directionality);
|
|
138
|
+
element = inject(ElementRef);
|
|
139
|
+
defaultPositions = null;
|
|
140
|
+
overlaySync = new RaqmMenuOverlaySync(this.trigger, this.element.nativeElement, inject(DestroyRef), this.direction, {
|
|
141
|
+
matchAnchorWidth: true,
|
|
142
|
+
positions: () => {
|
|
143
|
+
if (this.trigger.menuPosition !== this.defaultPositions) return this.trigger.menuPosition;
|
|
144
|
+
this.defaultPositions = this.defaultRootPositions();
|
|
145
|
+
this.trigger.menuPosition = this.defaultPositions;
|
|
146
|
+
return this.defaultPositions;
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
ngOnInit() {
|
|
150
|
+
if (this.trigger.menuPosition == null) {
|
|
151
|
+
this.defaultPositions = this.defaultRootPositions();
|
|
152
|
+
this.trigger.menuPosition = this.defaultPositions;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
defaultRootPositions() {
|
|
156
|
+
const alignOffset = this.direction?.value === "rtl" ? MENUBAR_ALIGN_OFFSET : -4;
|
|
157
|
+
return [{
|
|
158
|
+
originX: "start",
|
|
159
|
+
originY: "bottom",
|
|
160
|
+
overlayX: "start",
|
|
161
|
+
overlayY: "top",
|
|
162
|
+
offsetX: alignOffset,
|
|
163
|
+
offsetY: MENUBAR_SIDE_OFFSET
|
|
164
|
+
}, {
|
|
165
|
+
originX: "start",
|
|
166
|
+
originY: "top",
|
|
167
|
+
overlayX: "start",
|
|
168
|
+
overlayY: "bottom",
|
|
169
|
+
offsetX: alignOffset,
|
|
170
|
+
offsetY: -8
|
|
171
|
+
}];
|
|
172
|
+
}
|
|
173
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
174
|
+
minVersion: "12.0.0",
|
|
175
|
+
version: "22.2.2",
|
|
176
|
+
ngImport: i0,
|
|
177
|
+
type: RaqmMenubarTriggerDirective,
|
|
178
|
+
deps: [],
|
|
179
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
180
|
+
});
|
|
181
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
182
|
+
minVersion: "14.0.0",
|
|
183
|
+
version: "22.2.2",
|
|
184
|
+
type: RaqmMenubarTriggerDirective,
|
|
185
|
+
isStandalone: true,
|
|
186
|
+
selector: "button[raqm-menubar-trigger-for]",
|
|
187
|
+
host: { classAttribute: "raqm-menubar-trigger" },
|
|
188
|
+
hostDirectives: [
|
|
189
|
+
{ directive: i1.RaqmMenuDirection },
|
|
190
|
+
{
|
|
191
|
+
directive: i2.CdkMenuItem,
|
|
192
|
+
inputs: ["cdkMenuItemDisabled", "disabled"]
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
directive: i1.RaqmMenuTriggerBase,
|
|
196
|
+
inputs: [
|
|
197
|
+
"cdkMenuTriggerFor",
|
|
198
|
+
"raqm-menubar-trigger-for",
|
|
199
|
+
"cdkMenuPosition",
|
|
200
|
+
"positions"
|
|
201
|
+
],
|
|
202
|
+
outputs: [
|
|
203
|
+
"cdkMenuOpened",
|
|
204
|
+
"opened",
|
|
205
|
+
"cdkMenuClosed",
|
|
206
|
+
"closed"
|
|
207
|
+
]
|
|
208
|
+
}
|
|
209
|
+
],
|
|
210
|
+
ngImport: i0
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
214
|
+
minVersion: "12.0.0",
|
|
215
|
+
version: "22.2.2",
|
|
216
|
+
ngImport: i0,
|
|
217
|
+
type: RaqmMenubarTriggerDirective,
|
|
218
|
+
decorators: [{
|
|
219
|
+
type: Directive,
|
|
220
|
+
args: [{
|
|
221
|
+
selector: "button[raqm-menubar-trigger-for]",
|
|
222
|
+
hostDirectives: [
|
|
223
|
+
RaqmMenuDirection,
|
|
224
|
+
{
|
|
225
|
+
directive: CdkMenuItem,
|
|
226
|
+
inputs: ["cdkMenuItemDisabled: disabled"]
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
directive: RaqmMenuTriggerBase,
|
|
230
|
+
inputs: ["cdkMenuTriggerFor: raqm-menubar-trigger-for", "cdkMenuPosition: positions"],
|
|
231
|
+
outputs: ["cdkMenuOpened: opened", "cdkMenuClosed: closed"]
|
|
232
|
+
}
|
|
233
|
+
],
|
|
234
|
+
host: { class: "raqm-menubar-trigger" }
|
|
235
|
+
}]
|
|
236
|
+
}]
|
|
237
|
+
});
|
|
238
|
+
var RaqmMenubarItemDirective = class RaqmMenubarItemDirective {
|
|
239
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
240
|
+
minVersion: "12.0.0",
|
|
241
|
+
version: "22.2.2",
|
|
242
|
+
ngImport: i0,
|
|
243
|
+
type: RaqmMenubarItemDirective,
|
|
244
|
+
deps: [],
|
|
245
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
246
|
+
});
|
|
247
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
248
|
+
minVersion: "14.0.0",
|
|
249
|
+
version: "22.2.2",
|
|
250
|
+
type: RaqmMenubarItemDirective,
|
|
251
|
+
isStandalone: true,
|
|
252
|
+
selector: "button[raqm-menubar-item]",
|
|
253
|
+
host: { classAttribute: "raqm-menubar-item" },
|
|
254
|
+
hostDirectives: [{
|
|
255
|
+
directive: i1.RaqmMenuItemDirective,
|
|
256
|
+
inputs: [
|
|
257
|
+
"inset",
|
|
258
|
+
"inset",
|
|
259
|
+
"raqm-menu-item",
|
|
260
|
+
"raqm-menubar-item"
|
|
261
|
+
]
|
|
262
|
+
}],
|
|
263
|
+
ngImport: i0
|
|
264
|
+
});
|
|
265
|
+
};
|
|
266
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
267
|
+
minVersion: "12.0.0",
|
|
268
|
+
version: "22.2.2",
|
|
269
|
+
ngImport: i0,
|
|
270
|
+
type: RaqmMenubarItemDirective,
|
|
271
|
+
decorators: [{
|
|
272
|
+
type: Directive,
|
|
273
|
+
args: [{
|
|
274
|
+
selector: "button[raqm-menubar-item]",
|
|
275
|
+
hostDirectives: [{
|
|
276
|
+
directive: RaqmMenuItemDirective,
|
|
277
|
+
inputs: ["inset", "raqm-menu-item: raqm-menubar-item"]
|
|
278
|
+
}],
|
|
279
|
+
host: { class: "raqm-menubar-item" }
|
|
280
|
+
}]
|
|
281
|
+
}]
|
|
282
|
+
});
|
|
283
|
+
var RaqmMenubarCheckboxItemDirective = class RaqmMenubarCheckboxItemDirective {
|
|
284
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
285
|
+
minVersion: "12.0.0",
|
|
286
|
+
version: "22.2.2",
|
|
287
|
+
ngImport: i0,
|
|
288
|
+
type: RaqmMenubarCheckboxItemDirective,
|
|
289
|
+
deps: [],
|
|
290
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
291
|
+
});
|
|
292
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
293
|
+
minVersion: "14.0.0",
|
|
294
|
+
version: "22.2.2",
|
|
295
|
+
type: RaqmMenubarCheckboxItemDirective,
|
|
296
|
+
isStandalone: true,
|
|
297
|
+
selector: "button[raqm-menubar-checkbox-item]",
|
|
298
|
+
host: { classAttribute: "raqm-menubar-checkbox-item" },
|
|
299
|
+
hostDirectives: [{
|
|
300
|
+
directive: i1.RaqmMenuCheckboxItemDirective,
|
|
301
|
+
inputs: [
|
|
302
|
+
"inset",
|
|
303
|
+
"inset",
|
|
304
|
+
"checked",
|
|
305
|
+
"checked"
|
|
306
|
+
],
|
|
307
|
+
outputs: ["checkedChange", "checkedChange"]
|
|
308
|
+
}],
|
|
309
|
+
ngImport: i0
|
|
310
|
+
});
|
|
311
|
+
};
|
|
312
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
313
|
+
minVersion: "12.0.0",
|
|
314
|
+
version: "22.2.2",
|
|
315
|
+
ngImport: i0,
|
|
316
|
+
type: RaqmMenubarCheckboxItemDirective,
|
|
317
|
+
decorators: [{
|
|
318
|
+
type: Directive,
|
|
319
|
+
args: [{
|
|
320
|
+
selector: "button[raqm-menubar-checkbox-item]",
|
|
321
|
+
hostDirectives: [{
|
|
322
|
+
directive: RaqmMenuCheckboxItemDirective,
|
|
323
|
+
inputs: ["inset", "checked"],
|
|
324
|
+
outputs: ["checkedChange"]
|
|
325
|
+
}],
|
|
326
|
+
host: { class: "raqm-menubar-checkbox-item" }
|
|
327
|
+
}]
|
|
328
|
+
}]
|
|
329
|
+
});
|
|
330
|
+
const RAQM_MENUBAR_RADIO_GROUP = new InjectionToken("raqm-menubar-radio-group");
|
|
331
|
+
var RaqmMenubarRadioGroupDirective = class RaqmMenubarRadioGroupDirective {
|
|
332
|
+
value = model(null, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
|
|
333
|
+
registrations = /* @__PURE__ */ new Map();
|
|
334
|
+
isSelected(value) {
|
|
335
|
+
return this.value() === value;
|
|
336
|
+
}
|
|
337
|
+
select(value) {
|
|
338
|
+
this.value.set(value);
|
|
339
|
+
}
|
|
340
|
+
register(value) {
|
|
341
|
+
const count = this.registrations.get(value) ?? 0;
|
|
342
|
+
if (count > 0 && isDevMode()) throw new Error(`Raqm menubar radio group: duplicate radio item value "${value}". Each radio item inside one group needs a unique non-empty value.`);
|
|
343
|
+
this.registrations.set(value, count + 1);
|
|
344
|
+
}
|
|
345
|
+
unregister(value) {
|
|
346
|
+
const count = this.registrations.get(value) ?? 0;
|
|
347
|
+
if (count <= 1) this.registrations.delete(value);
|
|
348
|
+
else this.registrations.set(value, count - 1);
|
|
349
|
+
}
|
|
350
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
351
|
+
minVersion: "12.0.0",
|
|
352
|
+
version: "22.2.2",
|
|
353
|
+
ngImport: i0,
|
|
354
|
+
type: RaqmMenubarRadioGroupDirective,
|
|
355
|
+
deps: [],
|
|
356
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
357
|
+
});
|
|
358
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
359
|
+
minVersion: "17.1.0",
|
|
360
|
+
version: "22.2.2",
|
|
361
|
+
type: RaqmMenubarRadioGroupDirective,
|
|
362
|
+
isStandalone: true,
|
|
363
|
+
selector: "[raqm-menubar-radio-group]",
|
|
364
|
+
inputs: { value: {
|
|
365
|
+
classPropertyName: "value",
|
|
366
|
+
publicName: "value",
|
|
367
|
+
isSignal: true,
|
|
368
|
+
isRequired: false,
|
|
369
|
+
transformFunction: null
|
|
370
|
+
} },
|
|
371
|
+
outputs: { value: "valueChange" },
|
|
372
|
+
providers: [{
|
|
373
|
+
provide: RAQM_MENUBAR_RADIO_GROUP,
|
|
374
|
+
useExisting: RaqmMenubarRadioGroupDirective
|
|
375
|
+
}],
|
|
376
|
+
hostDirectives: [{ directive: i2.CdkMenuGroup }],
|
|
377
|
+
ngImport: i0
|
|
378
|
+
});
|
|
379
|
+
};
|
|
380
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
381
|
+
minVersion: "12.0.0",
|
|
382
|
+
version: "22.2.2",
|
|
383
|
+
ngImport: i0,
|
|
384
|
+
type: RaqmMenubarRadioGroupDirective,
|
|
385
|
+
decorators: [{
|
|
386
|
+
type: Directive,
|
|
387
|
+
args: [{
|
|
388
|
+
selector: "[raqm-menubar-radio-group]",
|
|
389
|
+
hostDirectives: [{ directive: CdkMenuGroup }],
|
|
390
|
+
providers: [{
|
|
391
|
+
provide: RAQM_MENUBAR_RADIO_GROUP,
|
|
392
|
+
useExisting: RaqmMenubarRadioGroupDirective
|
|
393
|
+
}]
|
|
394
|
+
}]
|
|
395
|
+
}],
|
|
396
|
+
propDecorators: { value: [{
|
|
397
|
+
type: i0.Input,
|
|
398
|
+
args: [{
|
|
399
|
+
isSignal: true,
|
|
400
|
+
alias: "value",
|
|
401
|
+
required: false
|
|
402
|
+
}]
|
|
403
|
+
}, {
|
|
404
|
+
type: i0.Output,
|
|
405
|
+
args: ["valueChange"]
|
|
406
|
+
}] }
|
|
407
|
+
});
|
|
408
|
+
var RaqmMenubarRadioItemDirective = class RaqmMenubarRadioItemDirective {
|
|
409
|
+
radio = inject(CdkMenuItemRadio);
|
|
410
|
+
group = inject(RAQM_MENUBAR_RADIO_GROUP, { optional: true });
|
|
411
|
+
value = input.required(...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
|
|
412
|
+
inset = input(false, {
|
|
413
|
+
...ngDevMode ? { debugName: "inset" } : /* istanbul ignore next */ {},
|
|
414
|
+
transform: booleanAttribute
|
|
415
|
+
});
|
|
416
|
+
triggerSubscription;
|
|
417
|
+
constructor() {
|
|
418
|
+
effect(() => {
|
|
419
|
+
if (this.group) this.radio.checked = this.group.isSelected(this.value());
|
|
420
|
+
});
|
|
421
|
+
this.triggerSubscription = this.radio.triggered.subscribe(() => {
|
|
422
|
+
if (this.group && !this.radio.disabled) this.group.select(this.value());
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
ngOnInit() {
|
|
426
|
+
const value = this.value();
|
|
427
|
+
if (!value && isDevMode()) throw new Error("Raqm menubar radio item: a non-empty `value` is required.");
|
|
428
|
+
this.group?.register(value);
|
|
429
|
+
}
|
|
430
|
+
ngOnDestroy() {
|
|
431
|
+
this.group?.unregister(this.value());
|
|
432
|
+
this.triggerSubscription.unsubscribe();
|
|
433
|
+
}
|
|
434
|
+
onPointerEnter(event) {
|
|
435
|
+
if (!(event instanceof PointerEvent) || event.pointerType === "touch" || this.radio.disabled) return;
|
|
436
|
+
this.radio.focus();
|
|
437
|
+
}
|
|
438
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
439
|
+
minVersion: "12.0.0",
|
|
440
|
+
version: "22.2.2",
|
|
441
|
+
ngImport: i0,
|
|
442
|
+
type: RaqmMenubarRadioItemDirective,
|
|
443
|
+
deps: [],
|
|
444
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
445
|
+
});
|
|
446
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
447
|
+
minVersion: "17.1.0",
|
|
448
|
+
version: "22.2.2",
|
|
449
|
+
type: RaqmMenubarRadioItemDirective,
|
|
450
|
+
isStandalone: true,
|
|
451
|
+
selector: "button[raqm-menubar-radio-item]",
|
|
452
|
+
inputs: {
|
|
453
|
+
value: {
|
|
454
|
+
classPropertyName: "value",
|
|
455
|
+
publicName: "value",
|
|
456
|
+
isSignal: true,
|
|
457
|
+
isRequired: true,
|
|
458
|
+
transformFunction: null
|
|
459
|
+
},
|
|
460
|
+
inset: {
|
|
461
|
+
classPropertyName: "inset",
|
|
462
|
+
publicName: "inset",
|
|
463
|
+
isSignal: true,
|
|
464
|
+
isRequired: false,
|
|
465
|
+
transformFunction: null
|
|
466
|
+
}
|
|
467
|
+
},
|
|
468
|
+
host: {
|
|
469
|
+
listeners: { "pointerenter": "onPointerEnter($event)" },
|
|
470
|
+
properties: { "attr.data-raqm-inset": "inset() ? \"\" : null" },
|
|
471
|
+
classAttribute: "raqm-menubar-radio-item"
|
|
472
|
+
},
|
|
473
|
+
hostDirectives: [{
|
|
474
|
+
directive: i2.CdkMenuItemRadio,
|
|
475
|
+
inputs: ["cdkMenuItemDisabled", "disabled"]
|
|
476
|
+
}],
|
|
477
|
+
ngImport: i0
|
|
478
|
+
});
|
|
479
|
+
};
|
|
480
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
481
|
+
minVersion: "12.0.0",
|
|
482
|
+
version: "22.2.2",
|
|
483
|
+
ngImport: i0,
|
|
484
|
+
type: RaqmMenubarRadioItemDirective,
|
|
485
|
+
decorators: [{
|
|
486
|
+
type: Directive,
|
|
487
|
+
args: [{
|
|
488
|
+
selector: "button[raqm-menubar-radio-item]",
|
|
489
|
+
hostDirectives: [{
|
|
490
|
+
directive: CdkMenuItemRadio,
|
|
491
|
+
inputs: ["cdkMenuItemDisabled: disabled"]
|
|
492
|
+
}],
|
|
493
|
+
host: {
|
|
494
|
+
class: "raqm-menubar-radio-item",
|
|
495
|
+
"[attr.data-raqm-inset]": "inset() ? \"\" : null",
|
|
496
|
+
"(pointerenter)": "onPointerEnter($event)"
|
|
497
|
+
}
|
|
498
|
+
}]
|
|
499
|
+
}],
|
|
500
|
+
ctorParameters: () => [],
|
|
501
|
+
propDecorators: {
|
|
502
|
+
value: [{
|
|
503
|
+
type: i0.Input,
|
|
504
|
+
args: [{
|
|
505
|
+
isSignal: true,
|
|
506
|
+
alias: "value",
|
|
507
|
+
required: true
|
|
508
|
+
}]
|
|
509
|
+
}],
|
|
510
|
+
inset: [{
|
|
511
|
+
type: i0.Input,
|
|
512
|
+
args: [{
|
|
513
|
+
isSignal: true,
|
|
514
|
+
alias: "inset",
|
|
515
|
+
required: false
|
|
516
|
+
}]
|
|
517
|
+
}]
|
|
518
|
+
}
|
|
519
|
+
});
|
|
520
|
+
const RaqmMenubar = [
|
|
521
|
+
RaqmMenubarDirective,
|
|
522
|
+
RaqmMenubarTriggerDirective,
|
|
523
|
+
RaqmMenubarContentDirective,
|
|
524
|
+
RaqmMenubarLabelDirective,
|
|
525
|
+
RaqmMenubarItemDirective,
|
|
526
|
+
RaqmMenubarCheckboxItemDirective,
|
|
527
|
+
RaqmMenubarRadioGroupDirective,
|
|
528
|
+
RaqmMenubarRadioItemDirective,
|
|
529
|
+
RaqmMenuGroupDirective,
|
|
530
|
+
RaqmMenuLabelDirective,
|
|
531
|
+
RaqmMenuSeparatorDirective,
|
|
532
|
+
RaqmMenuShortcutDirective
|
|
533
|
+
];
|
|
534
|
+
export { RaqmMenubar, RaqmMenubarCheckboxItemDirective, RaqmMenubarContentDirective, RaqmMenubarDirective, RaqmMenubarItemDirective, RaqmMenubarLabelDirective, RaqmMenubarRadioGroupDirective, RaqmMenubarRadioItemDirective, RaqmMenubarTriggerDirective };
|
|
535
|
+
|
|
536
|
+
//# sourceMappingURL=raqm-ui-menubar.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raqm-ui-menubar.mjs","names":[],"sources":["../../../projects/ui/menubar/menubar.directive.ts","../../../projects/ui/menubar/menubar-trigger.directive.ts","../../../projects/ui/menubar/menubar-item.directive.ts","../../../projects/ui/menubar/menubar-context.ts","../../../projects/ui/menubar/menubar-radio.directive.ts","../../../projects/ui/menubar/public-api.ts"],"sourcesContent":["import { Directive, booleanAttribute, input } from '@angular/core';\r\n\r\nimport { CdkMenuBar } from '@angular/cdk/menu';\r\n\r\nimport { RaqmMenuDirective, RaqmMenuDirection } from '@raqm/ui/dropdown-menu';\r\n\r\n@Directive({\r\n selector: '[raqm-menubar]',\r\n // The CDK owns role, orientation, stack, focus and keyboard; this adds only the class.\r\n hostDirectives: [RaqmMenuDirection, { directive: CdkMenuBar }],\r\n host: {\r\n class: 'raqm-menubar',\r\n },\r\n})\r\nexport class RaqmMenubarDirective {}\r\n\r\n@Directive({\r\n selector: '[raqm-menubar-content]',\r\n hostDirectives: [{ directive: RaqmMenuDirective }],\r\n host: {\r\n class: 'raqm-menubar-content',\r\n },\r\n})\r\nexport class RaqmMenubarContentDirective {}\r\n\r\n@Directive({\r\n selector: '[raqm-menubar-label]',\r\n host: {\r\n class: 'raqm-menubar-label',\r\n // Presence-only inset hook (the `data-raqm-inset` attribute exists or not).\r\n '[attr.data-raqm-inset]': 'inset() ? \"\" : null',\r\n },\r\n})\r\nexport class RaqmMenubarLabelDirective {\r\n readonly inset = input(false, { transform: booleanAttribute });\r\n}\r\n","import { DestroyRef, Directive, ElementRef, OnInit, inject } from '@angular/core';\r\n\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { CdkMenuItem } from '@angular/cdk/menu';\r\nimport { ConnectedPosition } from '@angular/cdk/overlay';\r\n\r\nimport {\r\n RaqmMenuOverlaySync,\r\n RaqmMenuDirection,\r\n RaqmMenuTriggerBase,\r\n} from '@raqm/ui/dropdown-menu';\r\n\r\nconst MENUBAR_SIDE_OFFSET = 8;\r\nconst MENUBAR_ALIGN_OFFSET = 4;\r\n\r\n@Directive({\r\n selector: 'button[raqm-menubar-trigger-for]',\r\n // `CdkMenuItem` supplies bar-item role/keyboard/focus; `CdkMenuTrigger` the overlay engine.\r\n hostDirectives: [\r\n RaqmMenuDirection,\r\n {\r\n directive: CdkMenuItem,\r\n inputs: ['cdkMenuItemDisabled: disabled'],\r\n },\r\n {\r\n directive: RaqmMenuTriggerBase,\r\n inputs: ['cdkMenuTriggerFor: raqm-menubar-trigger-for', 'cdkMenuPosition: positions'],\r\n outputs: ['cdkMenuOpened: opened', 'cdkMenuClosed: closed'],\r\n },\r\n ],\r\n host: {\r\n class: 'raqm-menubar-trigger',\r\n },\r\n})\r\nexport class RaqmMenubarTriggerDirective implements OnInit {\r\n // Used only to install the default placement when the app supplies no `positions`.\r\n private readonly trigger = inject(RaqmMenuTriggerBase);\r\n\r\n private readonly direction = inject(Directionality);\r\n\r\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n // Identity tracks library defaults without replacing consumer positions.\r\n private defaultPositions: ConnectedPosition[] | null = null;\r\n\r\n private readonly overlaySync = new RaqmMenuOverlaySync(\r\n this.trigger,\r\n this.element.nativeElement,\r\n inject(DestroyRef),\r\n this.direction,\r\n {\r\n matchAnchorWidth: true,\r\n positions: () => {\r\n if (this.trigger.menuPosition !== this.defaultPositions) return this.trigger.menuPosition;\r\n this.defaultPositions = this.defaultRootPositions();\r\n this.trigger.menuPosition = this.defaultPositions;\r\n return this.defaultPositions;\r\n },\r\n },\r\n );\r\n\r\n ngOnInit(): void {\r\n if (this.trigger.menuPosition == null) {\r\n this.defaultPositions = this.defaultRootPositions();\r\n this.trigger.menuPosition = this.defaultPositions;\r\n }\r\n }\r\n\r\n private defaultRootPositions(): ConnectedPosition[] {\r\n const alignOffset =\r\n this.direction?.value === 'rtl' ? MENUBAR_ALIGN_OFFSET : -MENUBAR_ALIGN_OFFSET;\r\n return [\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetX: alignOffset,\r\n offsetY: MENUBAR_SIDE_OFFSET,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetX: alignOffset,\r\n offsetY: -MENUBAR_SIDE_OFFSET,\r\n },\r\n ];\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\nimport { RaqmMenuCheckboxItemDirective, RaqmMenuItemDirective } from '@raqm/ui/dropdown-menu';\r\n\r\n@Directive({\r\n selector: 'button[raqm-menubar-item]',\r\n // Re-exposes the Dropdown row's declared inputs; the rest are inherited transitively.\r\n hostDirectives: [\r\n {\r\n directive: RaqmMenuItemDirective,\r\n inputs: ['inset', 'raqm-menu-item: raqm-menubar-item'],\r\n },\r\n ],\r\n host: {\r\n class: 'raqm-menubar-item',\r\n },\r\n})\r\nexport class RaqmMenubarItemDirective {}\r\n\r\n@Directive({\r\n selector: 'button[raqm-menubar-checkbox-item]',\r\n // The Dropdown checkbox row already composes the keep-open base and one CDK checkbox.\r\n hostDirectives: [\r\n {\r\n directive: RaqmMenuCheckboxItemDirective,\r\n inputs: ['inset', 'checked'],\r\n outputs: ['checkedChange'],\r\n },\r\n ],\r\n host: {\r\n class: 'raqm-menubar-checkbox-item',\r\n },\r\n})\r\nexport class RaqmMenubarCheckboxItemDirective {}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * Private radio-group contract shared with the item children; never re-exported.\r\n *\r\n * @remarks\r\n * The group owns the single `model` value: items read it through `isSelected` and\r\n * commit once through `select`. `register`/`unregister` only catch duplicate values.\r\n */\r\nexport interface RaqmMenubarRadioGroupContext {\r\n isSelected(value: string): boolean;\r\n // A reselect is a no-op, so it never clears the model or emits.\r\n select(value: string): void;\r\n register(value: string): void;\r\n unregister(value: string): void;\r\n}\r\n\r\nexport const RAQM_MENUBAR_RADIO_GROUP = new InjectionToken<RaqmMenubarRadioGroupContext>(\r\n 'raqm-menubar-radio-group',\r\n);\r\n","import {\r\n Directive,\r\n OnDestroy,\r\n OnInit,\r\n booleanAttribute,\r\n effect,\r\n inject,\r\n input,\r\n isDevMode,\r\n model,\r\n} from '@angular/core';\r\n\r\nimport { CdkMenuGroup, CdkMenuItemRadio } from '@angular/cdk/menu';\r\n\r\nimport { RAQM_MENUBAR_RADIO_GROUP, RaqmMenubarRadioGroupContext } from './menubar-context';\r\n\r\n@Directive({\r\n selector: '[raqm-menubar-radio-group]',\r\n // The CDK group scopes exclusive selection to this node with its own dispatcher.\r\n hostDirectives: [{ directive: CdkMenuGroup }],\r\n // The private context the radio items inject; one instance per group element.\r\n providers: [\r\n {\r\n provide: RAQM_MENUBAR_RADIO_GROUP,\r\n useExisting: RaqmMenubarRadioGroupDirective,\r\n },\r\n ],\r\n})\r\nexport class RaqmMenubarRadioGroupDirective implements RaqmMenubarRadioGroupContext {\r\n readonly value = model<string | null>(null);\r\n\r\n // Counts live item children per value, so a duplicate fails clearly in dev.\r\n private readonly registrations = new Map<string, number>();\r\n\r\n // Whether `value` is the committed selection; an unknown value matches nothing.\r\n isSelected(value: string): boolean {\r\n return this.value() === value;\r\n }\r\n\r\n select(value: string): void {\r\n this.value.set(value);\r\n }\r\n\r\n // A second claim for one value in dev fails: two radio items may not share it.\r\n register(value: string): void {\r\n const count = this.registrations.get(value) ?? 0;\r\n if (count > 0 && isDevMode()) {\r\n throw new Error(\r\n `Raqm menubar radio group: duplicate radio item value \"${value}\". ` +\r\n 'Each radio item inside one group needs a unique non-empty value.',\r\n );\r\n }\r\n this.registrations.set(value, count + 1);\r\n }\r\n\r\n // Deleting at zero lets a later item reuse a value once its predecessor is gone.\r\n unregister(value: string): void {\r\n const count = this.registrations.get(value) ?? 0;\r\n if (count <= 1) {\r\n this.registrations.delete(value);\r\n } else {\r\n this.registrations.set(value, count - 1);\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'button[raqm-menubar-radio-item]',\r\n // The CDK owns role, `aria-checked`, focus, keyboard and exclusive dispatch.\r\n hostDirectives: [\r\n {\r\n directive: CdkMenuItemRadio,\r\n inputs: ['cdkMenuItemDisabled: disabled'],\r\n },\r\n ],\r\n host: {\r\n class: 'raqm-menubar-radio-item',\r\n // Presence-only inset hook (the `data-raqm-inset` attribute exists or not).\r\n '[attr.data-raqm-inset]': 'inset() ? \"\" : null',\r\n // Focus-follows-pointer, identical to the Dropdown rows (see `onPointerEnter`).\r\n '(pointerenter)': 'onPointerEnter($event)',\r\n },\r\n})\r\nexport class RaqmMenubarRadioItemDirective implements OnInit, OnDestroy {\r\n // The single activation source: its `triggered` is observed, its `checked` derived.\r\n private readonly radio = inject(CdkMenuItemRadio);\r\n\r\n // A lone radio (no group) keeps the CDK's own exclusive-dispatch behaviour.\r\n private readonly group = inject(RAQM_MENUBAR_RADIO_GROUP, { optional: true });\r\n\r\n readonly value = input.required<string>();\r\n\r\n readonly inset = input(false, { transform: booleanAttribute });\r\n\r\n // Typed structurally (no rxjs import), matching the Dropdown checkbox pattern.\r\n private readonly triggerSubscription: { unsubscribe(): void };\r\n\r\n constructor() {\r\n // Derives `checked` from the group model, so an unknown group value matches no row.\r\n effect(() => {\r\n if (this.group) {\r\n this.radio.checked = this.group.isSelected(this.value());\r\n }\r\n });\r\n\r\n // One activation path: `triggered` is the only source of the model commit.\r\n this.triggerSubscription = this.radio.triggered.subscribe(() => {\r\n if (this.group && !this.radio.disabled) {\r\n this.group.select(this.value());\r\n }\r\n });\r\n }\r\n\r\n // Registers the value once inputs are bound; a missing or duplicate value fails in dev.\r\n ngOnInit(): void {\r\n const value = this.value();\r\n if (!value && isDevMode()) {\r\n throw new Error('Raqm menubar radio item: a non-empty `value` is required.');\r\n }\r\n this.group?.register(value);\r\n }\r\n\r\n // Releases the value registration and subscription so no menu outlives the directive.\r\n ngOnDestroy(): void {\r\n this.group?.unregister(this.value());\r\n this.triggerSubscription.unsubscribe();\r\n }\r\n\r\n // Hover highlight as in the Dropdown rows: an enabled, non-touch entry focuses the\r\n // row through the public `CdkMenuItem.focus()`, which never activates it.\r\n protected onPointerEnter(event: Event): void {\r\n if (!(event instanceof PointerEvent) || event.pointerType === 'touch' || this.radio.disabled) {\r\n return;\r\n }\r\n this.radio.focus();\r\n }\r\n}\r\n","// Public API for `@raqm/ui/menubar`; the root entry point re-exports these symbols.\r\nimport {\r\n RaqmMenuGroupDirective,\r\n RaqmMenuLabelDirective,\r\n RaqmMenuSeparatorDirective,\r\n RaqmMenuShortcutDirective,\r\n} from '@raqm/ui/dropdown-menu';\r\n\r\nimport {\r\n RaqmMenubarContentDirective,\r\n RaqmMenubarDirective,\r\n RaqmMenubarLabelDirective,\r\n} from './menubar.directive';\r\nimport { RaqmMenubarTriggerDirective } from './menubar-trigger.directive';\r\nimport {\r\n RaqmMenubarCheckboxItemDirective,\r\n RaqmMenubarItemDirective,\r\n} from './menubar-item.directive';\r\nimport {\r\n RaqmMenubarRadioGroupDirective,\r\n RaqmMenubarRadioItemDirective,\r\n} from './menubar-radio.directive';\r\n\r\nexport { RaqmMenubarDirective, RaqmMenubarContentDirective, RaqmMenubarLabelDirective };\r\nexport { RaqmMenubarTriggerDirective };\r\nexport { RaqmMenubarItemDirective, RaqmMenubarCheckboxItemDirective };\r\nexport { RaqmMenubarRadioGroupDirective, RaqmMenubarRadioItemDirective };\r\n\r\nexport const RaqmMenubar = [\r\n RaqmMenubarDirective,\r\n RaqmMenubarTriggerDirective,\r\n RaqmMenubarContentDirective,\r\n RaqmMenubarLabelDirective,\r\n RaqmMenubarItemDirective,\r\n RaqmMenubarCheckboxItemDirective,\r\n RaqmMenubarRadioGroupDirective,\r\n RaqmMenubarRadioItemDirective,\r\n RaqmMenuGroupDirective,\r\n RaqmMenuLabelDirective,\r\n RaqmMenuSeparatorDirective,\r\n RaqmMenuShortcutDirective,\r\n] as const;\r\n"],"mappings":"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"}
|