@radix-ng/primitives 0.18.1 → 0.19.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.
Files changed (73) hide show
  1. package/avatar/index.d.ts +1 -2
  2. package/avatar/src/avatar-fallback.directive.d.ts +11 -23
  3. package/avatar/src/avatar-image.directive.d.ts +10 -14
  4. package/avatar/src/avatar-root.directive.d.ts +5 -15
  5. package/checkbox/index.d.ts +11 -0
  6. package/checkbox/src/checkbox-button.directive.d.ts +1 -1
  7. package/checkbox/src/checkbox-indicator.directive.d.ts +1 -1
  8. package/checkbox/src/checkbox-input.directive.d.ts +1 -1
  9. package/checkbox/src/checkbox.directive.d.ts +1 -1
  10. package/compodoc/documentation.json +4895 -2139
  11. package/core/index.d.ts +2 -0
  12. package/core/src/control-value-accessor/index.d.ts +75 -0
  13. package/core/src/create-inject-context/assert-injector.d.ts +51 -0
  14. package/core/src/create-inject-context/index.d.ts +68 -0
  15. package/core/src/types.d.ts +23 -0
  16. package/esm2022/avatar/index.mjs +1 -1
  17. package/esm2022/avatar/src/avatar-fallback.directive.mjs +38 -40
  18. package/esm2022/avatar/src/avatar-image.directive.mjs +25 -26
  19. package/esm2022/avatar/src/avatar-root.directive.mjs +13 -25
  20. package/esm2022/checkbox/index.mjs +31 -1
  21. package/esm2022/checkbox/src/checkbox-button.directive.mjs +3 -3
  22. package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +3 -3
  23. package/esm2022/checkbox/src/checkbox-input.directive.mjs +3 -3
  24. package/esm2022/checkbox/src/checkbox.directive.mjs +3 -3
  25. package/esm2022/core/index.mjs +3 -1
  26. package/esm2022/core/src/control-value-accessor/index.mjs +103 -0
  27. package/esm2022/core/src/create-inject-context/assert-injector.mjs +15 -0
  28. package/esm2022/core/src/create-inject-context/index.mjs +116 -0
  29. package/esm2022/core/src/types.mjs +2 -0
  30. package/esm2022/radio/index.mjs +2 -1
  31. package/esm2022/radio/src/radio-item-input.directive.mjs +37 -0
  32. package/esm2022/radio/src/radio-item.directive.mjs +55 -36
  33. package/esm2022/radio/src/radio-root.directive.mjs +24 -110
  34. package/esm2022/radio/src/radio-tokens.mjs +1 -1
  35. package/esm2022/roving-focus/index.mjs +3 -0
  36. package/esm2022/roving-focus/radix-ng-primitives-roving-focus.mjs +5 -0
  37. package/esm2022/roving-focus/src/roving-focus-group.directive.mjs +138 -0
  38. package/esm2022/roving-focus/src/roving-focus-item.directive.mjs +133 -0
  39. package/esm2022/roving-focus/src/utils.mjs +47 -0
  40. package/esm2022/select/src/select-item.directive.mjs +8 -2
  41. package/esm2022/slider/src/slider-orientation-context.service.mjs +3 -4
  42. package/esm2022/slider/src/slider-root.component.mjs +5 -2
  43. package/esm2022/toggle/src/toggle-input.directive.mjs +4 -3
  44. package/fesm2022/radix-ng-primitives-avatar.mjs +70 -85
  45. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  46. package/fesm2022/radix-ng-primitives-checkbox.mjs +35 -10
  47. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  48. package/fesm2022/radix-ng-primitives-core.mjs +230 -3
  49. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  50. package/fesm2022/radix-ng-primitives-radio.mjs +142 -176
  51. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  52. package/fesm2022/radix-ng-primitives-roving-focus.mjs +320 -0
  53. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -0
  54. package/fesm2022/radix-ng-primitives-select.mjs +7 -1
  55. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  56. package/fesm2022/radix-ng-primitives-slider.mjs +6 -4
  57. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-toggle.mjs +3 -2
  59. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  60. package/package.json +7 -1
  61. package/radio/index.d.ts +1 -0
  62. package/radio/src/radio-item-input.directive.d.ts +12 -0
  63. package/radio/src/radio-item.directive.d.ts +23 -14
  64. package/radio/src/radio-root.directive.d.ts +15 -31
  65. package/radio/src/radio-tokens.d.ts +3 -3
  66. package/roving-focus/README.md +3 -0
  67. package/roving-focus/index.d.ts +3 -0
  68. package/roving-focus/src/roving-focus-group.directive.d.ts +50 -0
  69. package/roving-focus/src/roving-focus-item.directive.d.ts +50 -0
  70. package/roving-focus/src/utils.d.ts +19 -0
  71. package/select/src/select-item.directive.d.ts +7 -1
  72. package/slider/src/slider-root.component.d.ts +2 -0
  73. package/toggle/src/toggle-input.directive.d.ts +1 -1
@@ -0,0 +1,320 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, NgZone, ElementRef, EventEmitter, signal, booleanAttribute, Directive, Input, Output, computed } from '@angular/core';
3
+
4
+ const ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';
5
+ const EVENT_OPTIONS = { bubbles: false, cancelable: true };
6
+ const MAP_KEY_TO_FOCUS_INTENT = {
7
+ ArrowLeft: 'prev',
8
+ ArrowUp: 'prev',
9
+ ArrowRight: 'next',
10
+ ArrowDown: 'next',
11
+ PageUp: 'first',
12
+ Home: 'first',
13
+ PageDown: 'last',
14
+ End: 'last'
15
+ };
16
+ function getDirectionAwareKey(key, dir) {
17
+ if (dir !== 'rtl')
18
+ return key;
19
+ return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;
20
+ }
21
+ function getFocusIntent(event, orientation, dir) {
22
+ const key = getDirectionAwareKey(event.key, dir);
23
+ if (orientation === 'vertical' && ['ArrowLeft', 'ArrowRight'].includes(key))
24
+ return undefined;
25
+ if (orientation === 'horizontal' && ['ArrowUp', 'ArrowDown'].includes(key))
26
+ return undefined;
27
+ return MAP_KEY_TO_FOCUS_INTENT[key];
28
+ }
29
+ function focusFirst(candidates, preventScroll = false, rootNode) {
30
+ const PREVIOUSLY_FOCUSED_ELEMENT = rootNode?.activeElement ?? document.activeElement;
31
+ for (const candidate of candidates) {
32
+ // if focus is already where we want to go, we don't want to keep going through the candidates
33
+ if (candidate === PREVIOUSLY_FOCUSED_ELEMENT)
34
+ return;
35
+ candidate.focus({ preventScroll });
36
+ if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT)
37
+ return;
38
+ }
39
+ }
40
+ /**
41
+ * Wraps an array around itself at a given start index
42
+ * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`
43
+ */
44
+ function wrapArray(array, startIndex) {
45
+ return array.map((_, index) => array[(startIndex + index) % array.length]);
46
+ }
47
+ function generateId() {
48
+ return `rf-item-${Math.random().toString(36).slice(2, 11)}`;
49
+ }
50
+
51
+ class RdxRovingFocusGroupDirective {
52
+ constructor() {
53
+ this.ngZone = inject(NgZone);
54
+ this.elementRef = inject(ElementRef);
55
+ this.dir = 'ltr';
56
+ this.loop = true;
57
+ this.preventScrollOnEntryFocus = false;
58
+ this.entryFocus = new EventEmitter();
59
+ this.currentTabStopIdChange = new EventEmitter();
60
+ /** @ignore */
61
+ this.currentTabStopId = signal(null);
62
+ /** @ignore */
63
+ this.focusableItems = signal([]);
64
+ this.isClickFocus = signal(false);
65
+ this.isTabbingBackOut = signal(false);
66
+ this.focusableItemsCount = signal(0);
67
+ }
68
+ /** @ignore */
69
+ get dataOrientation() {
70
+ return this.orientation || 'horizontal';
71
+ }
72
+ /** @ignore */
73
+ get tabIndex() {
74
+ return this.isTabbingBackOut() || this.getFocusableItemsCount() === 0 ? -1 : 0;
75
+ }
76
+ /** @ignore */
77
+ handleBlur() {
78
+ this.isTabbingBackOut.set(false);
79
+ }
80
+ /** @ignore */
81
+ handleMouseUp() {
82
+ // reset `isClickFocus` after 1 tick because handleFocus might not triggered due to focused element
83
+ this.ngZone.runOutsideAngular(() => {
84
+ // eslint-disable-next-line promise/catch-or-return,promise/always-return
85
+ Promise.resolve().then(() => {
86
+ this.ngZone.run(() => {
87
+ this.isClickFocus.set(false);
88
+ });
89
+ });
90
+ });
91
+ }
92
+ /** @ignore */
93
+ handleFocus(event) {
94
+ // We normally wouldn't need this check, because we already check
95
+ // that the focus is on the current target and not bubbling to it.
96
+ // We do this because Safari doesn't focus buttons when clicked, and
97
+ // instead, the wrapper will get focused and not through a bubbling event.
98
+ const isKeyboardFocus = !this.isClickFocus();
99
+ if (event.currentTarget === this.elementRef.nativeElement &&
100
+ event.target === event.currentTarget &&
101
+ isKeyboardFocus &&
102
+ !this.isTabbingBackOut()) {
103
+ const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);
104
+ this.elementRef.nativeElement.dispatchEvent(entryFocusEvent);
105
+ this.entryFocus.emit(entryFocusEvent);
106
+ if (!entryFocusEvent.defaultPrevented) {
107
+ const items = this.focusableItems().filter((item) => item.dataset['disabled'] !== '');
108
+ const activeItem = items.find((item) => item.getAttribute('data-active') === 'true');
109
+ const currentItem = items.find((item) => item.id === this.currentTabStopId());
110
+ const candidateItems = [activeItem, currentItem, ...items].filter(Boolean);
111
+ focusFirst(candidateItems, this.preventScrollOnEntryFocus);
112
+ }
113
+ }
114
+ this.isClickFocus.set(false);
115
+ }
116
+ /** @ignore */
117
+ handleMouseDown() {
118
+ this.isClickFocus.set(true);
119
+ }
120
+ /** @ignore */
121
+ onItemFocus(tabStopId) {
122
+ this.currentTabStopId.set(tabStopId);
123
+ this.currentTabStopIdChange.emit(tabStopId);
124
+ }
125
+ /** @ignore */
126
+ onItemShiftTab() {
127
+ this.isTabbingBackOut.set(true);
128
+ }
129
+ /** @ignore */
130
+ onFocusableItemAdd() {
131
+ this.focusableItemsCount.update((count) => count + 1);
132
+ }
133
+ /** @ignore */
134
+ onFocusableItemRemove() {
135
+ this.focusableItemsCount.update((count) => Math.max(0, count - 1));
136
+ }
137
+ /** @ignore */
138
+ registerItem(item) {
139
+ const currentItems = this.focusableItems();
140
+ this.focusableItems.set([...currentItems, item]);
141
+ }
142
+ /** @ignore */
143
+ unregisterItem(item) {
144
+ const currentItems = this.focusableItems();
145
+ this.focusableItems.set(currentItems.filter((el) => el !== item));
146
+ }
147
+ /** @ignore */
148
+ getFocusableItemsCount() {
149
+ return this.focusableItemsCount();
150
+ }
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
152
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.11", type: RdxRovingFocusGroupDirective, isStandalone: true, selector: "[rdxRovingFocusGroup]", inputs: { orientation: "orientation", dir: "dir", loop: ["loop", "loop", booleanAttribute], preventScrollOnEntryFocus: ["preventScrollOnEntryFocus", "preventScrollOnEntryFocus", booleanAttribute] }, outputs: { entryFocus: "entryFocus", currentTabStopIdChange: "currentTabStopIdChange" }, host: { listeners: { "focus": "handleFocus($event)", "blur": "handleBlur()", "mouseup": "handleMouseUp()", "mousedown": "handleMouseDown()" }, properties: { "attr.data-orientation": "dataOrientation", "attr.tabindex": "tabIndex", "attr.dir": "dir" }, styleAttribute: "outline: none;" }, ngImport: i0 }); }
153
+ }
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusGroupDirective, decorators: [{
155
+ type: Directive,
156
+ args: [{
157
+ selector: '[rdxRovingFocusGroup]',
158
+ standalone: true,
159
+ host: {
160
+ '[attr.data-orientation]': 'dataOrientation',
161
+ '[attr.tabindex]': 'tabIndex',
162
+ '[attr.dir]': 'dir',
163
+ '(focus)': 'handleFocus($event)',
164
+ '(blur)': 'handleBlur()',
165
+ '(mouseup)': 'handleMouseUp()',
166
+ '(mousedown)': 'handleMouseDown()',
167
+ style: 'outline: none;'
168
+ }
169
+ }]
170
+ }], propDecorators: { orientation: [{
171
+ type: Input
172
+ }], dir: [{
173
+ type: Input
174
+ }], loop: [{
175
+ type: Input,
176
+ args: [{ transform: booleanAttribute }]
177
+ }], preventScrollOnEntryFocus: [{
178
+ type: Input,
179
+ args: [{ transform: booleanAttribute }]
180
+ }], entryFocus: [{
181
+ type: Output
182
+ }], currentTabStopIdChange: [{
183
+ type: Output
184
+ }] } });
185
+
186
+ class RdxRovingFocusItemDirective {
187
+ constructor() {
188
+ this.elementRef = inject(ElementRef);
189
+ this.ngZone = inject(NgZone);
190
+ this.parent = inject(RdxRovingFocusGroupDirective);
191
+ this.focusable = true;
192
+ this.active = true;
193
+ this.allowShiftKey = false;
194
+ this.id = computed(() => this.tabStopId || generateId());
195
+ /** @ignore */
196
+ this.isCurrentTabStop = computed(() => this.parent.currentTabStopId() === this.id());
197
+ }
198
+ /**
199
+ * Lifecycle hook triggered on initialization.
200
+ * Registers the element with the parent roving focus group if it is focusable.
201
+ * @ignore
202
+ */
203
+ ngOnInit() {
204
+ if (this.focusable) {
205
+ this.parent.registerItem(this.elementRef.nativeElement);
206
+ this.parent.onFocusableItemAdd();
207
+ }
208
+ }
209
+ /**
210
+ * Lifecycle hook triggered on destruction.
211
+ * Unregisters the element from the parent roving focus group if it is focusable.
212
+ * @ignore
213
+ */
214
+ ngOnDestroy() {
215
+ if (this.focusable) {
216
+ this.parent.unregisterItem(this.elementRef.nativeElement);
217
+ this.parent.onFocusableItemRemove();
218
+ }
219
+ }
220
+ /**
221
+ * Determines the `tabIndex` of the element.
222
+ * Returns `0` if the element is the current tab stop; otherwise, returns `-1`.
223
+ * @ignore
224
+ */
225
+ get tabIndex() {
226
+ return this.isCurrentTabStop() ? 0 : -1;
227
+ }
228
+ /** @ignore */
229
+ handleMouseDown(event) {
230
+ if (!this.focusable) {
231
+ // We prevent focusing non-focusable items on `mousedown`.
232
+ // Even though the item has tabIndex={-1}, that only means take it out of the tab order.
233
+ event.preventDefault();
234
+ }
235
+ else {
236
+ // Safari doesn't focus a button when clicked so we run our logic on mousedown also
237
+ this.parent.onItemFocus(this.id());
238
+ }
239
+ }
240
+ /** @ignore */
241
+ onFocus() {
242
+ this.parent.onItemFocus(this.id());
243
+ }
244
+ /**
245
+ * Handles the `keydown` event for keyboard navigation within the roving focus group.
246
+ * Supports navigation based on orientation and direction, and focuses appropriate elements.
247
+ *
248
+ * @param event The `KeyboardEvent` object.
249
+ * @ignore
250
+ */
251
+ handleKeydown(event) {
252
+ if (event.key === 'Tab' && event.shiftKey) {
253
+ this.parent.onItemShiftTab();
254
+ return;
255
+ }
256
+ if (event.target !== this.elementRef.nativeElement)
257
+ return;
258
+ const focusIntent = getFocusIntent(event, this.parent.orientation, this.parent.dir);
259
+ if (focusIntent !== undefined) {
260
+ if (event.metaKey || event.ctrlKey || event.altKey || (this.allowShiftKey ? false : event.shiftKey)) {
261
+ return;
262
+ }
263
+ event.preventDefault();
264
+ let candidateNodes = this.parent.focusableItems().filter((item) => item.dataset['disabled'] !== '');
265
+ if (focusIntent === 'last') {
266
+ candidateNodes.reverse();
267
+ }
268
+ else if (focusIntent === 'prev' || focusIntent === 'next') {
269
+ if (focusIntent === 'prev')
270
+ candidateNodes.reverse();
271
+ const currentIndex = candidateNodes.indexOf(this.elementRef.nativeElement);
272
+ candidateNodes = this.parent.loop
273
+ ? wrapArray(candidateNodes, currentIndex + 1)
274
+ : candidateNodes.slice(currentIndex + 1);
275
+ }
276
+ this.ngZone.runOutsideAngular(() => {
277
+ // eslint-disable-next-line promise/always-return,promise/catch-or-return
278
+ Promise.resolve().then(() => {
279
+ focusFirst(candidateNodes, false, this.elementRef.nativeElement);
280
+ });
281
+ });
282
+ }
283
+ }
284
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
285
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.11", type: RdxRovingFocusItemDirective, isStandalone: true, selector: "[rdxRovingFocusItem]", inputs: { focusable: ["focusable", "focusable", booleanAttribute], active: ["active", "active", booleanAttribute], tabStopId: "tabStopId", allowShiftKey: ["allowShiftKey", "allowShiftKey", booleanAttribute] }, host: { listeners: { "mousedown": "handleMouseDown($event)", "keydown": "handleKeydown($event)", "focus": "onFocus()" }, properties: { "attr.tabindex": "tabIndex", "attr.data-orientation": "parent.orientation", "attr.data-active": "active", "attr.data-disabled": "!focusable ? \"\" : undefined" } }, ngImport: i0 }); }
286
+ }
287
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: RdxRovingFocusItemDirective, decorators: [{
288
+ type: Directive,
289
+ args: [{
290
+ selector: '[rdxRovingFocusItem]',
291
+ standalone: true,
292
+ host: {
293
+ '[attr.tabindex]': 'tabIndex',
294
+ '[attr.data-orientation]': 'parent.orientation',
295
+ '[attr.data-active]': 'active',
296
+ '[attr.data-disabled]': '!focusable ? "" : undefined',
297
+ '(mousedown)': 'handleMouseDown($event)',
298
+ '(keydown)': 'handleKeydown($event)',
299
+ '(focus)': 'onFocus()'
300
+ }
301
+ }]
302
+ }], propDecorators: { focusable: [{
303
+ type: Input,
304
+ args: [{ transform: booleanAttribute }]
305
+ }], active: [{
306
+ type: Input,
307
+ args: [{ transform: booleanAttribute }]
308
+ }], tabStopId: [{
309
+ type: Input
310
+ }], allowShiftKey: [{
311
+ type: Input,
312
+ args: [{ transform: booleanAttribute }]
313
+ }] } });
314
+
315
+ /**
316
+ * Generated bundle index. Do not edit.
317
+ */
318
+
319
+ export { RdxRovingFocusGroupDirective, RdxRovingFocusItemDirective };
320
+ //# sourceMappingURL=radix-ng-primitives-roving-focus.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radix-ng-primitives-roving-focus.mjs","sources":["../../../packages/primitives/roving-focus/src/utils.ts","../../../packages/primitives/roving-focus/src/roving-focus-group.directive.ts","../../../packages/primitives/roving-focus/src/roving-focus-item.directive.ts","../../../packages/primitives/roving-focus/radix-ng-primitives-roving-focus.ts"],"sourcesContent":["export type Orientation = 'horizontal' | 'vertical';\nexport type Direction = 'ltr' | 'rtl';\n\nexport const ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';\nexport const EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\ntype FocusIntent = 'first' | 'last' | 'prev' | 'next';\n\nexport const MAP_KEY_TO_FOCUS_INTENT: Record<string, FocusIntent> = {\n ArrowLeft: 'prev',\n ArrowUp: 'prev',\n ArrowRight: 'next',\n ArrowDown: 'next',\n PageUp: 'first',\n Home: 'first',\n PageDown: 'last',\n End: 'last'\n};\n\nexport function getDirectionAwareKey(key: string, dir?: Direction) {\n if (dir !== 'rtl') return key;\n return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;\n}\n\nexport function getFocusIntent(event: KeyboardEvent, orientation?: Orientation, dir?: Direction) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === 'vertical' && ['ArrowLeft', 'ArrowRight'].includes(key)) return undefined;\n if (orientation === 'horizontal' && ['ArrowUp', 'ArrowDown'].includes(key)) return undefined;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\n\nexport function focusFirst(candidates: HTMLElement[], preventScroll = false, rootNode?: Document | ShadowRoot) {\n const PREVIOUSLY_FOCUSED_ELEMENT = rootNode?.activeElement ?? document.activeElement;\n for (const candidate of candidates) {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nexport function wrapArray<T>(array: T[], startIndex: number) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\n\nexport function generateId(): string {\n return `rf-item-${Math.random().toString(36).slice(2, 11)}`;\n}\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n Output,\n signal\n} from '@angular/core';\nimport { Direction, ENTRY_FOCUS, EVENT_OPTIONS, focusFirst, Orientation } from './utils';\n\n@Directive({\n selector: '[rdxRovingFocusGroup]',\n standalone: true,\n host: {\n '[attr.data-orientation]': 'dataOrientation',\n '[attr.tabindex]': 'tabIndex',\n '[attr.dir]': 'dir',\n '(focus)': 'handleFocus($event)',\n '(blur)': 'handleBlur()',\n '(mouseup)': 'handleMouseUp()',\n '(mousedown)': 'handleMouseDown()',\n style: 'outline: none;'\n }\n})\nexport class RdxRovingFocusGroupDirective {\n private readonly ngZone = inject(NgZone);\n private readonly elementRef = inject(ElementRef);\n\n @Input() orientation: Orientation | undefined;\n @Input() dir: Direction = 'ltr';\n @Input({ transform: booleanAttribute }) loop: boolean = true;\n @Input({ transform: booleanAttribute }) preventScrollOnEntryFocus: boolean = false;\n\n @Output() entryFocus = new EventEmitter<Event>();\n @Output() currentTabStopIdChange = new EventEmitter<string | null>();\n\n /** @ignore */\n readonly currentTabStopId = signal<string | null>(null);\n\n /** @ignore */\n readonly focusableItems = signal<HTMLElement[]>([]);\n\n private readonly isClickFocus = signal(false);\n private readonly isTabbingBackOut = signal(false);\n private readonly focusableItemsCount = signal(0);\n\n /** @ignore */\n get dataOrientation() {\n return this.orientation || 'horizontal';\n }\n\n /** @ignore */\n get tabIndex() {\n return this.isTabbingBackOut() || this.getFocusableItemsCount() === 0 ? -1 : 0;\n }\n\n /** @ignore */\n handleBlur() {\n this.isTabbingBackOut.set(false);\n }\n\n /** @ignore */\n handleMouseUp() {\n // reset `isClickFocus` after 1 tick because handleFocus might not triggered due to focused element\n this.ngZone.runOutsideAngular(() => {\n // eslint-disable-next-line promise/catch-or-return,promise/always-return\n Promise.resolve().then(() => {\n this.ngZone.run(() => {\n this.isClickFocus.set(false);\n });\n });\n });\n }\n\n /** @ignore */\n handleFocus(event: FocusEvent) {\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !this.isClickFocus();\n\n if (\n event.currentTarget === this.elementRef.nativeElement &&\n event.target === event.currentTarget &&\n isKeyboardFocus &&\n !this.isTabbingBackOut()\n ) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n this.elementRef.nativeElement.dispatchEvent(entryFocusEvent);\n this.entryFocus.emit(entryFocusEvent);\n\n if (!entryFocusEvent.defaultPrevented) {\n const items = this.focusableItems().filter((item) => item.dataset['disabled'] !== '');\n const activeItem = items.find((item) => item.getAttribute('data-active') === 'true');\n const currentItem = items.find((item) => item.id === this.currentTabStopId());\n const candidateItems = [activeItem, currentItem, ...items].filter(Boolean) as HTMLElement[];\n\n focusFirst(candidateItems, this.preventScrollOnEntryFocus);\n }\n }\n this.isClickFocus.set(false);\n }\n\n /** @ignore */\n handleMouseDown() {\n this.isClickFocus.set(true);\n }\n\n /** @ignore */\n onItemFocus(tabStopId: string) {\n this.currentTabStopId.set(tabStopId);\n this.currentTabStopIdChange.emit(tabStopId);\n }\n\n /** @ignore */\n onItemShiftTab() {\n this.isTabbingBackOut.set(true);\n }\n\n /** @ignore */\n onFocusableItemAdd() {\n this.focusableItemsCount.update((count) => count + 1);\n }\n\n /** @ignore */\n onFocusableItemRemove() {\n this.focusableItemsCount.update((count) => Math.max(0, count - 1));\n }\n\n /** @ignore */\n registerItem(item: HTMLElement) {\n const currentItems = this.focusableItems();\n this.focusableItems.set([...currentItems, item]);\n }\n\n /** @ignore */\n unregisterItem(item: HTMLElement) {\n const currentItems = this.focusableItems();\n this.focusableItems.set(currentItems.filter((el) => el !== item));\n }\n\n /** @ignore */\n getFocusableItemsCount() {\n return this.focusableItemsCount();\n }\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { RdxRovingFocusGroupDirective } from './roving-focus-group.directive';\nimport { focusFirst, generateId, getFocusIntent, wrapArray } from './utils';\n\n@Directive({\n selector: '[rdxRovingFocusItem]',\n standalone: true,\n host: {\n '[attr.tabindex]': 'tabIndex',\n '[attr.data-orientation]': 'parent.orientation',\n '[attr.data-active]': 'active',\n '[attr.data-disabled]': '!focusable ? \"\" : undefined',\n '(mousedown)': 'handleMouseDown($event)',\n '(keydown)': 'handleKeydown($event)',\n '(focus)': 'onFocus()'\n }\n})\nexport class RdxRovingFocusItemDirective implements OnInit, OnDestroy {\n private readonly elementRef = inject(ElementRef);\n private readonly ngZone = inject(NgZone);\n protected readonly parent = inject(RdxRovingFocusGroupDirective);\n\n @Input({ transform: booleanAttribute }) focusable: boolean = true;\n @Input({ transform: booleanAttribute }) active: boolean = true;\n @Input() tabStopId: string;\n @Input({ transform: booleanAttribute }) allowShiftKey: boolean = false;\n\n private readonly id = computed(() => this.tabStopId || generateId());\n\n /** @ignore */\n readonly isCurrentTabStop = computed(() => this.parent.currentTabStopId() === this.id());\n\n /**\n * Lifecycle hook triggered on initialization.\n * Registers the element with the parent roving focus group if it is focusable.\n * @ignore\n */\n ngOnInit() {\n if (this.focusable) {\n this.parent.registerItem(this.elementRef.nativeElement);\n this.parent.onFocusableItemAdd();\n }\n }\n\n /**\n * Lifecycle hook triggered on destruction.\n * Unregisters the element from the parent roving focus group if it is focusable.\n * @ignore\n */\n ngOnDestroy() {\n if (this.focusable) {\n this.parent.unregisterItem(this.elementRef.nativeElement);\n this.parent.onFocusableItemRemove();\n }\n }\n\n /**\n * Determines the `tabIndex` of the element.\n * Returns `0` if the element is the current tab stop; otherwise, returns `-1`.\n * @ignore\n */\n get tabIndex() {\n return this.isCurrentTabStop() ? 0 : -1;\n }\n\n /** @ignore */\n handleMouseDown(event: MouseEvent) {\n if (!this.focusable) {\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n event.preventDefault();\n } else {\n // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n this.parent.onItemFocus(this.id());\n }\n }\n\n /** @ignore */\n onFocus() {\n this.parent.onItemFocus(this.id());\n }\n\n /**\n * Handles the `keydown` event for keyboard navigation within the roving focus group.\n * Supports navigation based on orientation and direction, and focuses appropriate elements.\n *\n * @param event The `KeyboardEvent` object.\n * @ignore\n */\n handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Tab' && event.shiftKey) {\n this.parent.onItemShiftTab();\n return;\n }\n\n if (event.target !== this.elementRef.nativeElement) return;\n\n const focusIntent = getFocusIntent(event, this.parent.orientation, this.parent.dir);\n\n if (focusIntent !== undefined) {\n if (event.metaKey || event.ctrlKey || event.altKey || (this.allowShiftKey ? false : event.shiftKey)) {\n return;\n }\n\n event.preventDefault();\n\n let candidateNodes = this.parent.focusableItems().filter((item) => item.dataset['disabled'] !== '');\n\n if (focusIntent === 'last') {\n candidateNodes.reverse();\n } else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev') candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(this.elementRef.nativeElement);\n\n candidateNodes = this.parent.loop\n ? wrapArray(candidateNodes, currentIndex + 1)\n : candidateNodes.slice(currentIndex + 1);\n }\n\n this.ngZone.runOutsideAngular(() => {\n // eslint-disable-next-line promise/always-return,promise/catch-or-return\n Promise.resolve().then(() => {\n focusFirst(candidateNodes, false, this.elementRef.nativeElement);\n });\n });\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -328,13 +328,16 @@ class RdxSelectItemDirective {
328
328
  }
329
329
  });
330
330
  }
331
- /** Gets the label to be used when determining whether the option should be focused. */
331
+ /** Gets the label to be used when determining whether the option should be focused.
332
+ * @ignore
333
+ */
332
334
  getLabel() {
333
335
  return this.viewValue;
334
336
  }
335
337
  /**
336
338
  * `Selects the option while indicating the selection came from the user. Used to
337
339
  * determine if the select's view -> model callback should be invoked.`
340
+ * @ignore
338
341
  */
339
342
  selectViaInteraction() {
340
343
  if (!this.disabled) {
@@ -342,6 +345,7 @@ class RdxSelectItemDirective {
342
345
  this.onSelectionChange.emit(new RdxSelectItemChange(this));
343
346
  }
344
347
  }
348
+ /** @ignore */
345
349
  handleKeydown(event) {
346
350
  if (event.keyCode === ENTER || event.keyCode === SPACE) {
347
351
  this.selectViaInteraction();
@@ -350,10 +354,12 @@ class RdxSelectItemDirective {
350
354
  event.stopPropagation();
351
355
  }
352
356
  }
357
+ /** @ignore */
353
358
  setActiveStyles() {
354
359
  this.highlighted = true;
355
360
  this.nativeElement.focus({ preventScroll: true });
356
361
  }
362
+ /** @ignore */
357
363
  setInactiveStyles() {
358
364
  this.highlighted = false;
359
365
  }
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-select.mjs","sources":["../../../packages/primitives/select/src/select-value.directive.ts","../../../packages/primitives/select/src/select-trigger.directive.ts","../../../packages/primitives/select/src/select.component.ts","../../../packages/primitives/select/src/select-item.directive.ts","../../../packages/primitives/select/src/select-content.directive.ts","../../../packages/primitives/select/src/select-group.directive.ts","../../../packages/primitives/select/src/select-icon.directive.ts","../../../packages/primitives/select/src/select-item-indicator.directive.ts","../../../packages/primitives/select/src/select-label.directive.ts","../../../packages/primitives/select/src/select-separator.directive.ts","../../../packages/primitives/select/index.ts","../../../packages/primitives/select/radix-ng-primitives-select.ts"],"sourcesContent":["import { Component, inject, Input } from '@angular/core';\nimport { RdxSelectComponent } from './select.component';\n\n@Component({\n selector: '[rdxSelectValue]',\n standalone: true,\n exportAs: 'rdxSelectValue',\n template: `\n {{ select.selectionModel.isEmpty() ? placeholder : select.selected }}\n `,\n styles: `\n /* we don't want events from the children to bubble through the item they came from */\n :host {\n pointer-events: none;\n }\n `\n})\nexport class RdxSelectValueDirective {\n select = inject(RdxSelectComponent);\n\n @Input() placeholder: string;\n}\n","import { ContentChild, Directive, ElementRef, inject } from '@angular/core';\nimport { RdxSelectValueDirective } from './select-value.directive';\nimport { RdxSelectComponent } from './select.component';\n\n@Directive({\n selector: '[rdxSelectTrigger]',\n standalone: true,\n host: {\n '[attr.type]': '\"button\"',\n '[attr.role]': '\"combobox\"',\n '[attr.aria-autocomplete]': '\"none\"',\n '[attr.dir]': 'select.dir.value',\n '[attr.aria-expanded]': 'select.open',\n '[attr.aria-required]': 'select.required',\n\n '[attr.disabled]': 'select.disabled ? \"\" : null',\n '[attr.data-disabled]': 'select.disabled ? \"\" : null',\n '[attr.data-state]': \"select.open ? 'open': 'closed'\",\n '[attr.data-placeholder]': 'value.placeholder || null'\n }\n})\nexport class RdxSelectTriggerDirective {\n protected nativeElement = inject(ElementRef).nativeElement;\n protected select = inject(RdxSelectComponent);\n\n @ContentChild(RdxSelectValueDirective) protected value: RdxSelectValueDirective;\n\n focus() {\n this.nativeElement.focus();\n }\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkConnectedOverlay, ConnectedPosition, Overlay, OverlayModule } from '@angular/cdk/overlay';\nimport {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n NgZone,\n OnInit,\n Output,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { defer, delay, merge, Observable, Subscription, switchMap, take } from 'rxjs';\nimport { RdxSelectContentDirective } from './select-content.directive';\nimport { RdxSelectItemChange, RdxSelectItemDirective } from './select-item.directive';\nimport { RdxSelectTriggerDirective } from './select-trigger.directive';\n\nlet nextId = 0;\n\n@Component({\n standalone: true,\n selector: '[rdxSelect]',\n template: `\n <ng-content select=\"[rdxSelectTrigger]\" />\n\n <ng-template\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayOrigin]=\"elementRef\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"overlay.scrollStrategies.reposition()\"\n (attach)=\"onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"onDetach()\"\n cdkConnectedOverlay\n >\n <ng-content select=\"[rdxSelectContent]\" />\n </ng-template>\n `,\n host: {\n '(click)': 'toggle()',\n '(keydown)': 'content.keyManager.onKeydown($event)'\n },\n imports: [\n OverlayModule\n ]\n})\nexport class RdxSelectComponent implements OnInit, AfterContentInit {\n protected overlay = inject(Overlay);\n protected elementRef = inject(ElementRef);\n protected changeDetectorRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly ngZone = inject(NgZone);\n\n @ContentChild(RdxSelectTriggerDirective) protected trigger: RdxSelectTriggerDirective;\n\n @ContentChild(forwardRef(() => RdxSelectContentDirective))\n protected content: RdxSelectContentDirective;\n\n @ContentChildren(forwardRef(() => RdxSelectItemDirective), { descendants: true })\n items: QueryList<RdxSelectItemDirective>;\n\n @ViewChild(CdkConnectedOverlay, { static: false }) overlayDir: CdkConnectedOverlay;\n\n /** Deals with the selection logic. */\n selectionModel: SelectionModel<RdxSelectItemDirective>;\n\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n ];\n\n private closeSubscription = Subscription.EMPTY;\n\n /**\n * @ignore\n */\n readonly dir = inject(Directionality, { optional: true });\n\n /**\n * @ignore\n */\n protected keyManager: ActiveDescendantKeyManager<RdxSelectItemDirective>;\n\n /**\n * @ignore\n */\n readonly id: string = `rdx-select-${nextId++}`;\n\n @Input() defaultValue: string;\n @Input() name: string;\n\n @Input({ transform: booleanAttribute }) defaultOpen: boolean;\n\n @Input({ transform: booleanAttribute }) open: boolean = false;\n\n /** Whether the Select is disabled. */\n @Input({ transform: booleanAttribute }) disabled: boolean;\n\n @Input({ transform: booleanAttribute }) required: boolean;\n\n /**\n * The controlled value of the item to expand\n */\n @Input()\n set value(value: string) {\n if (this._value !== value) {\n this._value = value;\n\n this.selectValue(value);\n\n this.changeDetectorRef.markForCheck();\n }\n }\n\n get value(): string | null {\n return this._value ?? this.defaultValue;\n }\n\n private _value?: string;\n\n @Output() readonly onValueChange: EventEmitter<string> = new EventEmitter<string>();\n\n @Output() readonly onOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n readonly optionSelectionChanges: Observable<RdxSelectItemChange> = defer(() => {\n if (this.content.options) {\n return merge(...this.content.options.map((option) => option.onSelectionChange));\n }\n\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionSelectionChanges)\n );\n }) as Observable<RdxSelectItemChange>;\n\n get selected(): string | null {\n return this.selectionModel.selected[0].viewValue || null;\n }\n\n ngOnInit() {\n this.selectionModel = new SelectionModel<RdxSelectItemDirective>();\n\n this.selectionModel.changed.subscribe((changes) => {\n if (changes.added.length) {\n this.onValueChange.emit(this.selectionModel.selected[0].value);\n }\n\n if (changes.removed.length) {\n changes.removed.forEach((item) => (item.selected = false));\n }\n });\n }\n\n ngAfterContentInit() {\n this.selectDefaultValue();\n\n this.optionSelectionChanges.subscribe((event) => {\n this.selectionModel.clear();\n\n this.selectionModel.select(event.source);\n\n this.close();\n this.trigger.focus();\n });\n\n this.content.keyManager.tabOut.subscribe(() => {\n if (this.open) this.close();\n });\n\n if (this.defaultOpen) {\n this.openPanel();\n }\n }\n\n /**\n * Callback that is invoked when the overlay panel has been attached.\n */\n onAttached(): void {\n this.closeSubscription = this.closingActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .pipe(delay(0))\n .subscribe(() => this.close());\n }\n\n onDetach() {\n this.close();\n this.closeSubscription.unsubscribe();\n }\n\n /** Toggles the overlay panel open or closed. */\n toggle(): void {\n if (this.open) {\n this.close();\n } else {\n this.openPanel();\n }\n }\n\n openPanel() {\n this.open = true;\n\n this.onOpenChange.emit(this.open);\n }\n\n close() {\n this.open = false;\n\n this.onOpenChange.emit(this.open);\n }\n\n updateActiveItem(item: RdxSelectItemDirective) {\n this.content.keyManager.updateActiveItem(item);\n }\n\n private selectDefaultValue(): void {\n if (!this.defaultValue) return;\n\n this.selectValue(this.defaultValue);\n }\n\n private selectValue(value: string): void {\n const option = this.content?.options.find((option) => option.value === value);\n\n if (option) {\n option.selected = true;\n option.highlighted = true;\n\n this.selectionModel.select(option);\n this.updateActiveItem(option);\n }\n }\n\n private closingActions() {\n return merge(this.overlayDir.overlayRef!.outsidePointerEvents(), this.overlayDir.overlayRef!.detachments());\n }\n}\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { booleanAttribute, Directive, ElementRef, EventEmitter, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RdxSelectContentDirective } from './select-content.directive';\nimport { RdxSelectComponent } from './select.component';\n\nlet nextId = 0;\n\nexport class RdxSelectItemChange<T = RdxSelectItemDirective> {\n constructor(public source: T) {}\n}\n\n@Directive({\n selector: '[rdxSelectItem]',\n standalone: true,\n exportAs: 'rdxSelectItem',\n host: {\n '[attr.role]': '\"option\"',\n '[attr.data-state]': 'dataState',\n '[attr.aria-selected]': 'selected',\n '[attr.data-disabled]': 'disabled || null',\n '[attr.data-highlighted]': 'highlighted || null',\n '[attr.tabindex]': '-1',\n '(focus)': 'content.highlighted.next(this)',\n '(click)': 'selectViaInteraction()',\n '(keydown)': 'handleKeydown($event)',\n '(pointermove)': 'onPointerMove()'\n }\n})\nexport class RdxSelectItemDirective implements Highlightable {\n protected readonly select = inject(RdxSelectComponent);\n protected readonly content = inject(RdxSelectContentDirective);\n readonly onSelectionChange = new EventEmitter<RdxSelectItemChange>();\n protected readonly nativeElement = inject(ElementRef).nativeElement;\n\n highlighted: boolean = false;\n\n selected: boolean;\n\n get dataState(): string {\n return this.selected ? 'checked' : 'unchecked';\n }\n\n /**\n * The unique SelectItem id.\n * @ignore\n */\n readonly id: string = `rdx-select-item-${nextId++}`;\n\n @Input()\n set value(value: string) {\n this._value = value;\n }\n\n get value(): string {\n return this._value || this.id;\n }\n\n private _value?: string;\n\n @Input() textValue: string | null = null;\n\n /** Whether the SelectItem is disabled. */\n @Input({ transform: booleanAttribute })\n set disabled(value: boolean) {\n this._disabled = value;\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n private _disabled: boolean;\n\n get viewValue(): string {\n return this.textValue ?? this.nativeElement.textContent;\n }\n\n constructor() {\n this.content.highlighted.pipe(takeUntilDestroyed()).subscribe((value) => {\n if (value !== this) {\n this.highlighted = false;\n }\n });\n }\n\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel(): string {\n return this.viewValue;\n }\n\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n selectViaInteraction(): void {\n if (!this.disabled) {\n this.selected = true;\n\n this.onSelectionChange.emit(new RdxSelectItemChange(this));\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n if (event.keyCode === ENTER || event.keyCode === SPACE) {\n this.selectViaInteraction();\n\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n setActiveStyles(): void {\n this.highlighted = true;\n this.nativeElement.focus({ preventScroll: true });\n }\n\n setInactiveStyles(): void {\n this.highlighted = false;\n }\n\n protected onPointerMove(): void {\n if (!this.highlighted) {\n this.nativeElement.focus({ preventScroll: true });\n this.select.updateActiveItem(this);\n }\n }\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { AfterContentInit, ContentChildren, DestroyRef, Directive, inject, QueryList } from '@angular/core';\nimport { pairwise, startWith, Subject } from 'rxjs';\nimport { RdxSelectItemDirective } from './select-item.directive';\nimport { RdxSelectComponent } from './select.component';\n\n@Directive({\n selector: '[rdxSelectContent]',\n standalone: true,\n exportAs: 'rdxSelectContent',\n host: {\n '[attr.role]': '\"listbox\"',\n '[attr.data-state]': \"select.open ? 'open': 'closed'\",\n '[attr.data-side]': 'true',\n '[attr.data-align]': 'true',\n '(keydown)': 'keyManager.onKeydown($event)'\n }\n})\nexport class RdxSelectContentDirective implements AfterContentInit {\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly dir = inject(Directionality, { optional: true });\n protected select = inject(RdxSelectComponent);\n\n readonly highlighted = new Subject<RdxSelectItemDirective>();\n\n keyManager: ActiveDescendantKeyManager<RdxSelectItemDirective>;\n\n @ContentChildren(RdxSelectItemDirective, { descendants: true })\n options: QueryList<RdxSelectItemDirective>;\n\n constructor() {\n this.highlighted.pipe(startWith(null), pairwise()).subscribe(([prev, item]) => {\n if (prev) {\n prev.highlighted = false;\n }\n\n if (item) {\n item.highlighted = true;\n }\n });\n }\n\n initKeyManager() {\n return new ActiveDescendantKeyManager<RdxSelectItemDirective>(this.options)\n .withTypeAhead()\n .withVerticalOrientation()\n .withHorizontalOrientation(this.dir?.value ?? 'ltr');\n }\n\n ngAfterContentInit(): void {\n this.keyManager = this.initKeyManager();\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[rdxSelectGroup]',\n standalone: true,\n exportAs: 'rdxSelectGroup',\n host: {\n '[attr.role]': '\"group\"'\n }\n})\nexport class RdxSelectGroupDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[rdxSelectIcon]',\n standalone: true,\n exportAs: 'rdxSelectIcon',\n host: {\n '[attr.aria-hidden]': 'true'\n }\n})\nexport class RdxSelectIconDirective {}\n","import { Directive, inject } from '@angular/core';\nimport { RdxSelectItemDirective } from './select-item.directive';\n\n@Directive({\n selector: '[rdxSelectItemIndicator]',\n standalone: true,\n exportAs: 'rdxSelectItemIndicator',\n host: {\n '[attr.aria-hidden]': 'true',\n '[style.display]': 'item.selected ? \"\" : \"none\"'\n }\n})\nexport class RdxSelectItemIndicatorDirective {\n protected item = inject(RdxSelectItemDirective);\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[rdxSelectLabel]',\n standalone: true,\n exportAs: 'rdxSelectLabel'\n})\nexport class RdxSelectLabelDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[rdxSelectSeparator]',\n standalone: true,\n exportAs: 'rdxSelectSeparator',\n host: {\n '[attr.aria-hidden]': 'true'\n }\n})\nexport class RdxSelectSeparatorDirective {}\n","import { NgModule } from '@angular/core';\nimport { RdxSelectContentDirective } from './src/select-content.directive';\nimport { RdxSelectGroupDirective } from './src/select-group.directive';\nimport { RdxSelectIconDirective } from './src/select-icon.directive';\nimport { RdxSelectItemIndicatorDirective } from './src/select-item-indicator.directive';\nimport { RdxSelectItemDirective } from './src/select-item.directive';\nimport { RdxSelectLabelDirective } from './src/select-label.directive';\nimport { RdxSelectSeparatorDirective } from './src/select-separator.directive';\nimport { RdxSelectTriggerDirective } from './src/select-trigger.directive';\nimport { RdxSelectValueDirective } from './src/select-value.directive';\nimport { RdxSelectComponent } from './src/select.component';\n\nexport * from './src/select-content.directive';\nexport * from './src/select-group.directive';\nexport * from './src/select-icon.directive';\nexport * from './src/select-item-indicator.directive';\nexport * from './src/select-item.directive';\nexport * from './src/select-label.directive';\nexport * from './src/select-separator.directive';\nexport * from './src/select-trigger.directive';\nexport * from './src/select-value.directive';\nexport * from './src/select.component';\n\nconst _imports = [\n RdxSelectContentDirective,\n RdxSelectGroupDirective,\n RdxSelectItemDirective,\n RdxSelectItemIndicatorDirective,\n RdxSelectLabelDirective,\n RdxSelectComponent,\n RdxSelectSeparatorDirective,\n RdxSelectTriggerDirective,\n RdxSelectValueDirective,\n RdxSelectIconDirective\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-select.mjs","sources":["../../../packages/primitives/select/src/select-value.directive.ts","../../../packages/primitives/select/src/select-trigger.directive.ts","../../../packages/primitives/select/src/select.component.ts","../../../packages/primitives/select/src/select-item.directive.ts","../../../packages/primitives/select/src/select-content.directive.ts","../../../packages/primitives/select/src/select-group.directive.ts","../../../packages/primitives/select/src/select-icon.directive.ts","../../../packages/primitives/select/src/select-item-indicator.directive.ts","../../../packages/primitives/select/src/select-label.directive.ts","../../../packages/primitives/select/src/select-separator.directive.ts","../../../packages/primitives/select/index.ts","../../../packages/primitives/select/radix-ng-primitives-select.ts"],"sourcesContent":["import { Component, inject, Input } from '@angular/core';\nimport { RdxSelectComponent } from './select.component';\n\n@Component({\n selector: '[rdxSelectValue]',\n standalone: true,\n exportAs: 'rdxSelectValue',\n template: `\n {{ select.selectionModel.isEmpty() ? placeholder : select.selected }}\n `,\n styles: `\n /* we don't want events from the children to bubble through the item they came from */\n :host {\n pointer-events: none;\n }\n `\n})\nexport class RdxSelectValueDirective {\n select = inject(RdxSelectComponent);\n\n @Input() placeholder: string;\n}\n","import { ContentChild, Directive, ElementRef, inject } from '@angular/core';\nimport { RdxSelectValueDirective } from './select-value.directive';\nimport { RdxSelectComponent } from './select.component';\n\n@Directive({\n selector: '[rdxSelectTrigger]',\n standalone: true,\n host: {\n '[attr.type]': '\"button\"',\n '[attr.role]': '\"combobox\"',\n '[attr.aria-autocomplete]': '\"none\"',\n '[attr.dir]': 'select.dir.value',\n '[attr.aria-expanded]': 'select.open',\n '[attr.aria-required]': 'select.required',\n\n '[attr.disabled]': 'select.disabled ? \"\" : null',\n '[attr.data-disabled]': 'select.disabled ? \"\" : null',\n '[attr.data-state]': \"select.open ? 'open': 'closed'\",\n '[attr.data-placeholder]': 'value.placeholder || null'\n }\n})\nexport class RdxSelectTriggerDirective {\n protected nativeElement = inject(ElementRef).nativeElement;\n protected select = inject(RdxSelectComponent);\n\n @ContentChild(RdxSelectValueDirective) protected value: RdxSelectValueDirective;\n\n focus() {\n this.nativeElement.focus();\n }\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkConnectedOverlay, ConnectedPosition, Overlay, OverlayModule } from '@angular/cdk/overlay';\nimport {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n NgZone,\n OnInit,\n Output,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { defer, delay, merge, Observable, Subscription, switchMap, take } from 'rxjs';\nimport { RdxSelectContentDirective } from './select-content.directive';\nimport { RdxSelectItemChange, RdxSelectItemDirective } from './select-item.directive';\nimport { RdxSelectTriggerDirective } from './select-trigger.directive';\n\nlet nextId = 0;\n\n@Component({\n standalone: true,\n selector: '[rdxSelect]',\n template: `\n <ng-content select=\"[rdxSelectTrigger]\" />\n\n <ng-template\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayOrigin]=\"elementRef\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"overlay.scrollStrategies.reposition()\"\n (attach)=\"onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"onDetach()\"\n cdkConnectedOverlay\n >\n <ng-content select=\"[rdxSelectContent]\" />\n </ng-template>\n `,\n host: {\n '(click)': 'toggle()',\n '(keydown)': 'content.keyManager.onKeydown($event)'\n },\n imports: [\n OverlayModule\n ]\n})\nexport class RdxSelectComponent implements OnInit, AfterContentInit {\n protected overlay = inject(Overlay);\n protected elementRef = inject(ElementRef);\n protected changeDetectorRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly ngZone = inject(NgZone);\n\n @ContentChild(RdxSelectTriggerDirective) protected trigger: RdxSelectTriggerDirective;\n\n @ContentChild(forwardRef(() => RdxSelectContentDirective))\n protected content: RdxSelectContentDirective;\n\n @ContentChildren(forwardRef(() => RdxSelectItemDirective), { descendants: true })\n items: QueryList<RdxSelectItemDirective>;\n\n @ViewChild(CdkConnectedOverlay, { static: false }) overlayDir: CdkConnectedOverlay;\n\n /** Deals with the selection logic. */\n selectionModel: SelectionModel<RdxSelectItemDirective>;\n\n /**\n * This position config ensures that the top \"start\" corner of the overlay\n * is aligned with the top \"start\" of the origin by default (overlapping\n * the trigger completely). If the panel cannot fit below the trigger, it\n * will fall back to a position above the trigger.\n */\n positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n }\n ];\n\n private closeSubscription = Subscription.EMPTY;\n\n /**\n * @ignore\n */\n readonly dir = inject(Directionality, { optional: true });\n\n /**\n * @ignore\n */\n protected keyManager: ActiveDescendantKeyManager<RdxSelectItemDirective>;\n\n /**\n * @ignore\n */\n readonly id: string = `rdx-select-${nextId++}`;\n\n @Input() defaultValue: string;\n @Input() name: string;\n\n @Input({ transform: booleanAttribute }) defaultOpen: boolean;\n\n @Input({ transform: booleanAttribute }) open: boolean = false;\n\n /** Whether the Select is disabled. */\n @Input({ transform: booleanAttribute }) disabled: boolean;\n\n @Input({ transform: booleanAttribute }) required: boolean;\n\n /**\n * The controlled value of the item to expand\n */\n @Input()\n set value(value: string) {\n if (this._value !== value) {\n this._value = value;\n\n this.selectValue(value);\n\n this.changeDetectorRef.markForCheck();\n }\n }\n\n get value(): string | null {\n return this._value ?? this.defaultValue;\n }\n\n private _value?: string;\n\n @Output() readonly onValueChange: EventEmitter<string> = new EventEmitter<string>();\n\n @Output() readonly onOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n readonly optionSelectionChanges: Observable<RdxSelectItemChange> = defer(() => {\n if (this.content.options) {\n return merge(...this.content.options.map((option) => option.onSelectionChange));\n }\n\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionSelectionChanges)\n );\n }) as Observable<RdxSelectItemChange>;\n\n get selected(): string | null {\n return this.selectionModel.selected[0].viewValue || null;\n }\n\n ngOnInit() {\n this.selectionModel = new SelectionModel<RdxSelectItemDirective>();\n\n this.selectionModel.changed.subscribe((changes) => {\n if (changes.added.length) {\n this.onValueChange.emit(this.selectionModel.selected[0].value);\n }\n\n if (changes.removed.length) {\n changes.removed.forEach((item) => (item.selected = false));\n }\n });\n }\n\n ngAfterContentInit() {\n this.selectDefaultValue();\n\n this.optionSelectionChanges.subscribe((event) => {\n this.selectionModel.clear();\n\n this.selectionModel.select(event.source);\n\n this.close();\n this.trigger.focus();\n });\n\n this.content.keyManager.tabOut.subscribe(() => {\n if (this.open) this.close();\n });\n\n if (this.defaultOpen) {\n this.openPanel();\n }\n }\n\n /**\n * Callback that is invoked when the overlay panel has been attached.\n */\n onAttached(): void {\n this.closeSubscription = this.closingActions()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .pipe(delay(0))\n .subscribe(() => this.close());\n }\n\n onDetach() {\n this.close();\n this.closeSubscription.unsubscribe();\n }\n\n /** Toggles the overlay panel open or closed. */\n toggle(): void {\n if (this.open) {\n this.close();\n } else {\n this.openPanel();\n }\n }\n\n openPanel() {\n this.open = true;\n\n this.onOpenChange.emit(this.open);\n }\n\n close() {\n this.open = false;\n\n this.onOpenChange.emit(this.open);\n }\n\n updateActiveItem(item: RdxSelectItemDirective) {\n this.content.keyManager.updateActiveItem(item);\n }\n\n private selectDefaultValue(): void {\n if (!this.defaultValue) return;\n\n this.selectValue(this.defaultValue);\n }\n\n private selectValue(value: string): void {\n const option = this.content?.options.find((option) => option.value === value);\n\n if (option) {\n option.selected = true;\n option.highlighted = true;\n\n this.selectionModel.select(option);\n this.updateActiveItem(option);\n }\n }\n\n private closingActions() {\n return merge(this.overlayDir.overlayRef!.outsidePointerEvents(), this.overlayDir.overlayRef!.detachments());\n }\n}\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { booleanAttribute, Directive, ElementRef, EventEmitter, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RdxSelectContentDirective } from './select-content.directive';\nimport { RdxSelectComponent } from './select.component';\n\nlet nextId = 0;\n\nexport class RdxSelectItemChange<T = RdxSelectItemDirective> {\n constructor(public source: T) {}\n}\n\n@Directive({\n selector: '[rdxSelectItem]',\n standalone: true,\n exportAs: 'rdxSelectItem',\n host: {\n '[attr.role]': '\"option\"',\n '[attr.data-state]': 'dataState',\n '[attr.aria-selected]': 'selected',\n '[attr.data-disabled]': 'disabled || null',\n '[attr.data-highlighted]': 'highlighted || null',\n '[attr.tabindex]': '-1',\n '(focus)': 'content.highlighted.next(this)',\n '(click)': 'selectViaInteraction()',\n '(keydown)': 'handleKeydown($event)',\n '(pointermove)': 'onPointerMove()'\n }\n})\nexport class RdxSelectItemDirective implements Highlightable {\n protected readonly select = inject(RdxSelectComponent);\n protected readonly content = inject(RdxSelectContentDirective);\n readonly onSelectionChange = new EventEmitter<RdxSelectItemChange>();\n protected readonly nativeElement = inject(ElementRef).nativeElement;\n\n highlighted: boolean = false;\n\n selected: boolean;\n\n get dataState(): string {\n return this.selected ? 'checked' : 'unchecked';\n }\n\n /**\n * The unique SelectItem id.\n * @ignore\n */\n readonly id: string = `rdx-select-item-${nextId++}`;\n\n @Input()\n set value(value: string) {\n this._value = value;\n }\n\n get value(): string {\n return this._value || this.id;\n }\n\n private _value?: string;\n\n @Input() textValue: string | null = null;\n\n /** Whether the SelectItem is disabled. */\n @Input({ transform: booleanAttribute })\n set disabled(value: boolean) {\n this._disabled = value;\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n private _disabled: boolean;\n\n get viewValue(): string {\n return this.textValue ?? this.nativeElement.textContent;\n }\n\n constructor() {\n this.content.highlighted.pipe(takeUntilDestroyed()).subscribe((value) => {\n if (value !== this) {\n this.highlighted = false;\n }\n });\n }\n\n /** Gets the label to be used when determining whether the option should be focused.\n * @ignore\n */\n getLabel(): string {\n return this.viewValue;\n }\n\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n * @ignore\n */\n selectViaInteraction(): void {\n if (!this.disabled) {\n this.selected = true;\n\n this.onSelectionChange.emit(new RdxSelectItemChange(this));\n }\n }\n\n /** @ignore */\n handleKeydown(event: KeyboardEvent): void {\n if (event.keyCode === ENTER || event.keyCode === SPACE) {\n this.selectViaInteraction();\n\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /** @ignore */\n setActiveStyles(): void {\n this.highlighted = true;\n this.nativeElement.focus({ preventScroll: true });\n }\n\n /** @ignore */\n setInactiveStyles(): void {\n this.highlighted = false;\n }\n\n protected onPointerMove(): void {\n if (!this.highlighted) {\n this.nativeElement.focus({ preventScroll: true });\n this.select.updateActiveItem(this);\n }\n }\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { AfterContentInit, ContentChildren, DestroyRef, Directive, inject, QueryList } from '@angular/core';\nimport { pairwise, startWith, Subject } from 'rxjs';\nimport { RdxSelectItemDirective } from './select-item.directive';\nimport { RdxSelectComponent } from './select.component';\n\n@Directive({\n selector: '[rdxSelectContent]',\n standalone: true,\n exportAs: 'rdxSelectContent',\n host: {\n '[attr.role]': '\"listbox\"',\n '[attr.data-state]': \"select.open ? 'open': 'closed'\",\n '[attr.data-side]': 'true',\n '[attr.data-align]': 'true',\n '(keydown)': 'keyManager.onKeydown($event)'\n }\n})\nexport class RdxSelectContentDirective implements AfterContentInit {\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly dir = inject(Directionality, { optional: true });\n protected select = inject(RdxSelectComponent);\n\n readonly highlighted = new Subject<RdxSelectItemDirective>();\n\n keyManager: ActiveDescendantKeyManager<RdxSelectItemDirective>;\n\n @ContentChildren(RdxSelectItemDirective, { descendants: true })\n options: QueryList<RdxSelectItemDirective>;\n\n constructor() {\n this.highlighted.pipe(startWith(null), pairwise()).subscribe(([prev, item]) => {\n if (prev) {\n prev.highlighted = false;\n }\n\n if (item) {\n item.highlighted = true;\n }\n });\n }\n\n initKeyManager() {\n return new ActiveDescendantKeyManager<RdxSelectItemDirective>(this.options)\n .withTypeAhead()\n .withVerticalOrientation()\n .withHorizontalOrientation(this.dir?.value ?? 'ltr');\n }\n\n ngAfterContentInit(): void {\n this.keyManager = this.initKeyManager();\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[rdxSelectGroup]',\n standalone: true,\n exportAs: 'rdxSelectGroup',\n host: {\n '[attr.role]': '\"group\"'\n }\n})\nexport class RdxSelectGroupDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[rdxSelectIcon]',\n standalone: true,\n exportAs: 'rdxSelectIcon',\n host: {\n '[attr.aria-hidden]': 'true'\n }\n})\nexport class RdxSelectIconDirective {}\n","import { Directive, inject } from '@angular/core';\nimport { RdxSelectItemDirective } from './select-item.directive';\n\n@Directive({\n selector: '[rdxSelectItemIndicator]',\n standalone: true,\n exportAs: 'rdxSelectItemIndicator',\n host: {\n '[attr.aria-hidden]': 'true',\n '[style.display]': 'item.selected ? \"\" : \"none\"'\n }\n})\nexport class RdxSelectItemIndicatorDirective {\n protected item = inject(RdxSelectItemDirective);\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[rdxSelectLabel]',\n standalone: true,\n exportAs: 'rdxSelectLabel'\n})\nexport class RdxSelectLabelDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[rdxSelectSeparator]',\n standalone: true,\n exportAs: 'rdxSelectSeparator',\n host: {\n '[attr.aria-hidden]': 'true'\n }\n})\nexport class RdxSelectSeparatorDirective {}\n","import { NgModule } from '@angular/core';\nimport { RdxSelectContentDirective } from './src/select-content.directive';\nimport { RdxSelectGroupDirective } from './src/select-group.directive';\nimport { RdxSelectIconDirective } from './src/select-icon.directive';\nimport { RdxSelectItemIndicatorDirective } from './src/select-item-indicator.directive';\nimport { RdxSelectItemDirective } from './src/select-item.directive';\nimport { RdxSelectLabelDirective } from './src/select-label.directive';\nimport { RdxSelectSeparatorDirective } from './src/select-separator.directive';\nimport { RdxSelectTriggerDirective } from './src/select-trigger.directive';\nimport { RdxSelectValueDirective } from './src/select-value.directive';\nimport { RdxSelectComponent } from './src/select.component';\n\nexport * from './src/select-content.directive';\nexport * from './src/select-group.directive';\nexport * from './src/select-icon.directive';\nexport * from './src/select-item-indicator.directive';\nexport * from './src/select-item.directive';\nexport * from './src/select-label.directive';\nexport * from './src/select-separator.directive';\nexport * from './src/select-trigger.directive';\nexport * from './src/select-value.directive';\nexport * from './src/select.component';\n\nconst _imports = [\n RdxSelectContentDirective,\n RdxSelectGroupDirective,\n RdxSelectItemDirective,\n RdxSelectItemIndicatorDirective,\n RdxSelectLabelDirective,\n RdxSelectComponent,\n RdxSelectSeparatorDirective,\n RdxSelectTriggerDirective,\n RdxSelectValueDirective,\n RdxSelectIconDirective\n];\n\n@NgModule({\n imports: [..._imports],\n exports: [..._imports]\n})\nexport class RdxSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}